cmake configure_file函數補充說明。

configure_file中出現了#cmakedefine#define用法,看完沒有明白實際的區別。

這是2011年也有同樣問題的人發的email的答覆


實例cmake配置

#cmakedefine TEST_VAR "${VAR}"
#cmakedefine01 VAR
...
set(VAR "Hello World")
...
configure_file(xxx.h.in xxx.h)
...

具有以下區別:
#define定義在xxx.h.in文件中,具有以下輸出

#define TEST_VAR "Hello World"
#define VAR 1

如果set函數沒有定義VAR變量,則是以下輸出

/* #undef TEST_VAR */
/* #undef VAR */

說明:
#define VAR [val] 定義的宏會始終出現,取得變量不僅限於cmake變量。
#cmakedefine VAR <val> 會根據所引用得變量存在有2中情況,例子已經說明了。
#cmakedefine01 VAR 會根據VAR所代表得cmake變量是否存在,存在則會#define VAR 1,否則是#define VAR 0

問題:
#define和#cmakedefine所引用得變量的範圍不一樣,對PROJECT_BINARY_DIR變量,只有#define能取到值,原因未知。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章