CMake Remove /arch:sse2 for Visual Studio 2013

CMake Remove /arch:sse2 for Visual Studio 2013

本文关键字:for Visual Studio 2013 sse2 Remove arch CMake      更新时间:2023-10-16

我现在正在处理的项目使用CMake生成x64 visual studio 2010项目。目前我正在将其转换为x64 visual studio 2013。

大多数东西都刚刚正确就位,但我收到了以下警告:

cl : Command line warning D9002 : ignoring unknown option '/arch:SSE2'

跟踪此问题,visual studio 2013似乎不再支持x64项目的/arch:SSE2,因为默认情况下使用此扩展。

我已经搜索了我们的各种CMakeLists.txt(我们在每个项目中都有,一个用于整个解决方案),但我们没有设置标志,所以我假设这是在CMake中默认设置的。

在visual studio中,我可以转到project > properties > C/C++ > Code Generation > Enable Enhanced Instruction Set并将其设置为"未设置",一切都可以正常工作,没有任何警告。

如何在CMakeLists.txt中执行此操作?

我已经看到了几种设置变量的方法,通常是类似set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2")的方法,但这不能用于删除标志(至少我不知道)。

您可以尝试使用字符串操作删除此标志:

string(REPLACE "/arch:SSE2" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})

如果这不起作用,那么试着使用一个临时变量:

string(REPLACE "/arch:SSE2" "" OUT_VAR ${CMAKE_CXX_FLAGS})
set(CMAKE_CXX_FLAGS ${OUT_VAR} CACHE)