在CMakeLists.txt文件中,是否可以检测到最高级别的SSE,并将其保存到CMAKE_CXX_FLAGS?换句话说,我希望能够编写如下内容:

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

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

最佳答案

这可能是过大了,但是vc on gitorious上的OptimizeForArchitecture.cmake将提供基于该体系结构的优化列表。

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

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

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

09-25 20:41