2012-02-02 37 views
1

我在我的CMakeLists.txt文件中有這個集合。如何使用cmake在c源文件中檢測調試版本?

SET(CMAKE_BUILD_TYPE 「調試」)

然而,這不是我的C源文件

#if defined(DEBUG) 
// not getting here 
#else 
// getting here instead 
#endif 

任何工作通過設置CMAKE_BUILD_TYPE到調試定義了什麼符號,如果?

回答

2

找到了答案。這絕對是那些使用cmake的新手的陷阱。

看來,如果您以前使用另一種構建類型構建它,那麼更改CMakeLists.txt中的構建類型不會更改構建類型。原因是因爲它的緩存。

看到我正在建設的源頭。即我的源代碼樹中有一個單獨的Build目錄。我通常只會運行「cmake ..」

因此,清除Build樹並運行「cmake ..」再次修復它。 DEBUG現在正在爲我的源文件中定義的,我可以驗證它使VERBOSE = 1

此鏈接提供進一步的細節和其它選項:

Understanding why CMAKE_BUILD_TYPE cannot be set