在CMakeLists.txt文件中,有没有办法检测可用的最高SSE级别,并将其保存到CMAKE_CXX_FLAGS?换句话说,我希望能够写出类似的内容:
FindSSE() # defines SSE_FLAGS
set(CMAKE_CXX_FLAGS ${SSE_FLAGS})
例如,如果平台最多支持SSE级别3,则FindSSE()会将SSE_FLAGS设置为-msse3。
答案 0 :(得分:3)
这可能有点矫枉过正,但是来自vcious的vc的OptimizeForArchitecture.cmake将提供基于架构的优化列表。
您可以直接使用该脚本,也可以将其修剪为您需要的代码。
更好的解决方案是制作一个小型cmake测试脚本,该脚本使用SSE指令并检查每个变体是否编译/运行。
编辑:更具体地说,来自同一来源的FindSSE.cmake,虽然它仍然使用有点笨重的解析方法/proc/cpuinfo