我决定使用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/