我这里有一个项目 - 虽然我相信它与使用的软件包无关 - 当配置为
时 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
桌子上的问题是 - 如何使用我的旗帜?
答案 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"
应该有效。尽管如此仍然有点尴尬。