2012-10-11 31 views
1

選項我在CMake的定義下列選項:檢查CMake的在C++源

option(OURAPP-DEV-USE_EXTREME_DEBUGGING "Use extreme debugging features" OFF) 

,我想在一個C++文件,以檢查該選項被選中(在CMake的圖形用戶界面),或者沒有。

I.e.編寫C++代碼,如:

#if OURAPP-DEV-USE_EXTREME_DEBUGGING 
print_extra_debugging(); 
#endif 

請注意,我們的項目設置需要有關於組件的選項之間的-(如OURAPP和DEV,其餘...)

任何想法如何使它發生?

+0

C預處理器宏(和C++宏)也不能在其名稱中使用連字符。 CMake可能會允許這樣的選項名稱,但我希望它會在將它變成C宏(可能通過用下劃線替換連字符)之前對其進行修改,但我目前沒有可用的CMake手冊的副本。 .. – twalberg

+0

@twalberg:CMake不會自動導出任何定義。你必須明確地告訴它(並且你可以根據需要命名)。 –

+0

@JanHudec對 - 我在CMake上有點新手......我的觀點更多的是關於'#if'構造(無論如何應該是'#ifdef'),無論CMake如何實現那點... – twalberg

回答

4

使用預處理器定義將CMake選項傳送到C++世界。

IF(OURAPP-DEV-USE_EXTREME_DEBUGGING) 
    ADD_DEFINITIONS(-DUSE_EXTREME_DEBUGGING) 
ENDIF() 

引擎蓋下,這增加了該定義與編譯器命令行,並且然後提供給預處理器:

#ifdef USE_EXTREME_DEBUGGING 
    print_extra_debugging(); 
#endif 

注意,連字符不處於C預處理令牌是有效的字符,所以你必須改變定義中的名字。