【发布时间】:2015-06-28 02:45:57
【问题描述】:
我现在正在处理的项目使用 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"),但这不能用于删除标志(至少我不知道)。
【问题讨论】:
-
等等,cmake 不应该设置这个,除非你在某些包含的模块中这样做?无论如何,编译器会忽略该标志,因为无论如何它都是 x64 的默认值。哦,你还使用任何其他
/arch标志吗? -
嗯,SSE2 在 64 位平台上始终可用。这实际上是对最小 x86-64 平台的定义:16 个 64 位寄存器,具有 16 个寄存器的 SSE2 单元,RIP 寻址,至少 40 位物理寻址等。不管你要求与否,你都会得到它
标签: c++ visual-studio-2013 cmake