cmake拒绝某些cflags

时间:2010-11-27 21:55:44

标签: cmake

我这里有一个项目 - 虽然我相信它与使用的软件包无关 - 当配置为

cmake -DCMAKE_C_FLAGS_RELEASE="-O2 -msse"

使用那些确切的标志。但是,一旦我使用

cmake -DCMAKE_C_FLAGS_RELEASE="-O2 -msse -fmessage-length=0"

cmake进入顽固状态并忽略我想要的标志,而不是默认为项目的默认值。这甚至反映在CMakeCache.txt中,但我不知道该怎么做。

CMakeCache.txt:CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
CMakeCache.txt:CMAKE_C_FLAGS_RELEASE=-O2 -msse -fmessage-length:UNINITIALIZED=0

桌子上的问题是 - 如何使用我的旗帜?

2 个答案:

答案 0 :(得分:3)

is a known bug in the command line parsing in CMake。它与extra =符号混淆,并认为变量名称为CMAKE_C_FLAGS_RELEASE=-O2 -msse -fmessage-length,值为0

以正确的格式获取缓存中的选项的一种方法是使用缓存编辑器。最初运行cmake后,运行make edit_cache,然后按 t 切换高级选项, Ctrl-n 向下切换到CMAKE_C_FLAGS_RELEASE选项,点击输入进行编辑并输入所需的值。在那之后键入 c 然后 g 来配置和生成Makefile。

或者,只需使用$ EDITOR编辑缓存并输入正确的行:

CMAKE_C_FLAGS_RELEASE:STRING=-O2 -msse -fmessage-length=0

这不是很优雅,但它应该让你开车。

答案 1 :(得分:2)

BTW,类型声明也可以在命令行中使用,例如:

cmake -DCMAKE_C_FLAGS_RELEASE:STRING="-O2 -msse -fmessage-length=0"

应该有效。尽管如此仍然有点尴尬。