在libake项目中包含libsimdpp

时间:2015-05-10 17:17:49

标签: c++ cmake simd

我决定使用libsimdpp来对我的C ++代码进行矢量化。问题是,旁边没有关于如何入门的文档。

Í假设包含是简单的,因为它也像我正在做的项目一样基于CMake,所以我只是试图复制目录并设置包含路径。好吧,事实证明这还不够:你需要定义适当的标志来指定你想要编译的SIMD风格。 libsimdpp包含一个CMake宏,它可以实现奇迹。我不确定如何从这里开始,感觉我正在反对CMake,而不是通过复制和删除东西。

对CMake有深刻理解的人是否会逐步解释如何做?谢谢!

1 个答案:

答案 0 :(得分:2)

您应该查看编译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)添加到可执行文件中。