2010-11-27 65 views
2

我這裏有一個項目 - 雖然我相信這是獨立於所使用的包 - ,當與cmake的拒絕一定CFLAGS

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

桌子上的問題是 - 我如何使用我的旗幟?

回答

3

This 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然後按切換高級選項,CTRL-N下至CMAKE_C_FLAGS_RELEASE選項,打輸入對其進行編輯,然後鍵入您想要的值。在那之後,c然後g配置並生成Makefiles。

或者,只需編輯您的$ EDITOR緩存,並輸入正確的路線:

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

這是不是很優雅,但它應該讓你電動機帶動。

2

BTW,類型聲明也通過命令行的作品,例如:

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

應該工作。仍然有點尷尬。