從configure_file中出現了#cmakedefine
和#define
用法,看完沒有明白實際的區別。
實例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能取到值,原因未知。