如何在CMake中检测sse可用性

时间:2011-08-01 16:19:00

标签: build cross-platform cmake sse

在CMakeLists.txt文件中,有没有办法检测可用的最高SSE级别,并将其保存到CMAKE_CXX_FLAGS?换句话说,我希望能够写出类似的内容:

FindSSE()  # defines SSE_FLAGS
set(CMAKE_CXX_FLAGS ${SSE_FLAGS})

例如,如果平台最多支持SSE级别3,则FindSSE()会将SSE_FLAGS设置为-msse3。

1 个答案:

答案 0 :(得分:3)

这可能有点矫枉过正,但是来自vcious的vc的OptimizeForArchitecture.cmake将提供基于架构的优化列表。

您可以直接使用该脚本,也可以将其修剪为您需要的代码。

更好的解决方案是制作一个小型cmake测试脚本,该脚本使用SSE指令并检查每个变体是否编译/运行。

编辑:更具体地说,来自同一来源的FindSSE.cmake,虽然它仍然使用有点笨重的解析方法/proc/cpuinfo