cmake:add_definitions
生活随笔
收集整理的這篇文章主要介紹了
cmake:add_definitions
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
此文為:輕松入門cmake系列教程
引言
其實這個函數在安裝一些庫的時候,它的CMakeLists里面就有這樣的函數。典型的就是opencv了。
opencv安裝時候有一些指令也是針對這個函數的,比如安裝命令:
其中-D后面的參數就是控制程序流向。
官方文檔
- 為當前目錄中的目標(在調用此命令之前或之后添加的目標)以及在此之后添加的子目錄中的目標添加定義到編譯器命令行。此命令可用于添加任何標志,但它的目的是添加預處理器定義。
- 注意此命令已被替代:
- 使用add_compile_definitions()添加預處理器定義。
- 使用include_directories()添加包含目錄。
- 使用add_compile_options()添加其他選項。
- 以-D或/D開頭的看起來像預處理器定義的標志,會自動添加到當前目錄的COMPILE_DEFINITIONS目錄屬性中。
- 為了向后兼容,具有重要值的定義可以保留在標志集合中,而不是進行轉換。
官方文檔
用處
看源碼時使用
這種可以在我們更改別人代碼做實驗時使用,既不對其源碼進行破壞,又可以添加自己的功能。之前都是在程序中進行#define,有了這個后可以直接在編譯的時候進行選擇。具體的,在工程CMakeLists.txt 中,使用add_definitions()函數控制代碼的開啟和關閉:
option(TEST_DEBUG "option for debug" OFF) if (TEST_DEBUG) add_definitions(-DTEST_DEBUG) endif(TEST_DEBUG)運行構建項目的時候可以添加參數控制宏的開啟和關閉.
cmake -DUSE_MACRO = on .. #打開 cmake -DUSE_MACRO=off .. #關閉在源碼中就可以使用:
#ifdef TEST_DEBUG ... ... #else ... #endif來對程序進行控制。
定義變量直接在程序中使用
CMakeList.txt
add_definitions(-DHAVE_CONFIG_H-DCONFIG_DIR="/etc/netdata" )main.c
int main(int argc, char **argv) {printf("%d\n", HAVE_CONFIG_H);printf("%s\n", CONFIG_DIR); }總結
以上是生活随笔為你收集整理的cmake:add_definitions的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 倍量过左峰选股公式,找到起爆点
- 下一篇: 电影《饥饿站台》所告诉我的