2012-06-14 106 views
7

我想包括調試/釋放依賴編譯器標誌,如:CMake的忽略CMAKE_BUILD_TYPE =調試

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x -Wall -DUSE_BOOST") 
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall") 
set(CMAKE_CSS_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O3") 

創建我的build文件夾中的命令,如:

cmake -DCMAKE_BUILD_TYPE=Release -D UseFortran=True -D CMAKE_CXX_COMPILER=g++-4.6 ~/repos/cliques/cliques 

然而,似乎與CMAKE版本2.8.7,CMAKE_BUILD_TYPE被忽略。它似乎與版本2.8.4完美(在不同的機器上),所以這種方法已被棄用或在這裏有一些其他問題?

澤納

+0

它不被棄用。你如何評估它被忽略? – Fraser

+0

可執行文件中沒有調試符號,如果我添加了錯誤的命令,例如設置(CMAKE_CXX_FLAGS_DEBUG「$ {CMAKE_CXX_FLAGS_DEBUG} -Wall許多壞命令」),沒有任何效果。 – zenna

+2

必須閱讀:http://www.cmake.org/pipermail/cmake/2008-September/023808.html – bitek

回答

4

的問題是,必須有-D和可變之間的空間。也就是說,它應該是:

cmake -D CMAKE_BUILD_TYPE=Release -D UseFortran=True -D CMAKE_CXX_COMPILER=g++-4.6 ~/repos/cliques/cliques 
+1

並且不要忘記定義變量類型。從CMake文檔,它是:'-D = ' –

+5

我有_never_不得不在-D之後使用空格。你確定你的'CMAKE_CXX_FLAGS_DEBUG'包含'-g'嗎?如果您重新使用了相同的構建目錄,則可能會重用變量緩存中的無效值。 – Mark

+0

構建類型'RELEASE'和'Release'是否相同? – nn0p

1

爲什麼在創建構建文件夾時不使用-DCMAKE_BUILD_TYPE=Debug? Cmake構建發佈類型項目或調試類型項目,而不是兩個在一起。

2

我認爲他們在前一個版本的CMAKE_BUILD_TYPE中犯了一個錯字。我們有這個瑕疵,這裏有一條可行的路線。

cmake -D CMAKE_BUILD_TYPE:STRING=Debug ../src 

您可以檢查每一個東西都很好用:

cmake -L ../src 

使用此命令可以讓你對變量命名CMAKE_BUILD_TYPE的正確途徑。

祝你好運。

5

您有一個錯字。你的代碼說CMAKE_CSS_FLAGS_RELEASE。通知CSS,應該是CXX