2015-06-12 70 views
0

隨着當一些定義,定義他們以這種方式定義的CMake:兩種不同的CMake difinitions

add_definitions(-DMY_DEFINITION) 

有時我看到人們在以不同的方式定義:

add_definitions(-DMY_DEFINITION=1) 

然後我的問題它們在生成的C++項目中有什麼區別。謝謝。

回答

3

這不是真的與CMake相關,而是與C/++編譯器更相關。 在代碼中的差異之間是相同的:

#define MY_DEFINITION 

#define MY_DEFINITION 1 

實際上,有沒有需要定義的值的C/++宏,如果你想的唯一一件事就是知道如果宏存在(已定義),就像一個「標誌」。最好的例子就是頭包括後衛:

#ifndef MYHEADER 
#define MYHEADER 
// ... 
#endif 

但有時人喜歡設置一個值(如= 1),即使它們並不需要它,因爲它更詳盡,或清除。

更一般而言,當您影響宏的值時,這是因爲您期望宏名稱被擴展爲該值。當你不希望這個價值存在時。的方法進行試驗,完成可以是不同的:

隨着-DMY_DEFINITION:

#ifdef MY_DEFINITION 
    // Do something 
#else 
    // Do somthing else 
#endif 

隨着-DMY_DEFINITION = 1

#if MY_DEFINITION 
    // Do something 
#else 
    // Do somthing else 
#endif