c++ - 在 CMake 项目中包含 libsimdpp

标签 c++ cmake simd

我决定使用libsimdpp用于我的 C++ 代码的矢量化。问题是,几乎没有关于如何开始的文档。

Í 假设包含很简单,因为它也像我正在做的项目一样基于 CMake,所以我只是尝试复制目录并设置包含路径。好吧,事实证明这还不够:您需要定义适当的标志来指定要编译的 SIMD 风格。 libsimdpp 包含一个专门用于此目的的 CMake 宏,它的效果非常好。然而,我不确定如何从这里开始,感觉就像我正在反对 CMake,而不是通过复制内容和删除内容来使用它。

任何对 CMake 有深入了解的人都会开始逐步解释该做什么吗?谢谢!

最佳答案

您应该查看编译 libsimdpp 测试的 simdpp/test/CMakeLists.txt 文件。相关部分如下:

foreach(SRC ${TEST1_ARCH_SOURCES})
    simdpp_multiarch(TEST1_ARCH_GEN_SOURCES ${SRC} ${COMPILABLE_ARCHS})
endforeach()

add_executable(test1 EXCLUDE_FROM_ALL
    ${TEST1_SOURCES}
    ${TEST1_ARCH_GEN_SOURCES}
)

基本上,TEST1_ARCH_SOURCES 包含使用 libsimdpp 的代码。 simdpp_multiarch 复制源代码并为它们设置适当的编译标志,以便实现例如SSE2 和 AVX2 可以链接到同一个可执行文件中。然后将这些生成的源 (TEST1_ARCH_GEN_SOURCES) 添加到可执行文件中。

关于c++ - 在 CMake 项目中包含 libsimdpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30154328/

相关文章:

c++ - 使用 Ajax 请求从 QWebView 读取本地文件

c++ - boost::variant 的默认访问者函数

c++ - 我可以将AVX/SSE用作AoS布局而不是SoA吗?

build - CMake自定义构建问题

c++ - CMake:运行链接命令时出错:%1 不是有效的 Win32 应用程序

c++ - 具有可扩展 vector 扩展 (SVE) 的 ARM V-8

c++ - SSE 优化循环,在数组中查找零并切换标志 + 更新另一个数组

c++ - 用qt解析html?

C++二进制文件 - 一遍又一遍地写入相同的数字

c++ - cmake/C++ : which package contains `-lOpenGLSupport`