參考資料:
http://www.360doc.com/content/16/0420/15/32619808_552310135.shtml
http://sewm.pku.edu.cn/src/paradise/reference/CMake%20Practice.pdf
http://blog.csdn.net/xocoder/article/details/8546907指令推薦大寫; 大小寫不敏感;
變量使用${}
, IF語句中直接使用變量,不需要${}
下面是一個例子:
PROJECT (HELLO)
SET(SRC_LIST main.c)
MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})
MESSAGE(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})
ADD_EXECUTABLE(hello ${SRC_LIST})
說明:
PROJECT(name)
name工程名, 。這個指令隱式的定義了兩個 cmake 變量:
<projectname>_BINARY_DIR
以及<projectname>_SOURCE_DIR
,這裏就是name_BINARY_DIR
;
cmake 系統也幫助我們預定義了PROJECT_BINARY_DIR
和PROJECT_SOURCE_DIR
變量,他們的值分別跟HELLO_BINARY_DIR
與HELLO_SOURCE_DIR
一致。
SET 指令的語法, 用來設置變量:
SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])
MESSAGE用於cmake時輸出消息; STATUS是輸出前加上--
MESSAGE([SEND_ERROR | STATUS | FATAL_ERROR] "message to display"...)
輸出可執行文件定義:
ADD_EXECUTABLE(hello ${SRC_LIST})
定義了這個工程會生成一個文件名爲 hello 的可執行文件,相關的源文件是 SRC_LIST 中定義的源文件列表;
添加原文件路徑:
AUX_SOURCE_DIRECTORY(. namevar)
AUT_SOURCE_DIRECTORY(ohterpath namevsr) #otherpath是源文件搜索路徑
ADD_EXECUTABLE(hello ${namevsr})
頭文件搜索路徑:
如果有多個文件夾中包含有源文件, 可以使用下面的命令:
INCLUDE_DIRECTORIES([AFTER|BEFORE] [SYSTEM] dir1 dir2 ...)
這條指令可以用來向工程添加多個特定的頭文件搜索路徑,路徑之間用空格分割,如果路徑中包含了空格,可以使用雙引號將它括起來,默認的行爲是追加到當前的頭文件搜索路徑的
後面,你可以通過兩種方式來進行控制搜索路徑添加的方式:
1. CMAKE_INCLUDE_DIRECTORIES_BEFORE,通過 SET 這個 cmake 變量爲 on,可以
將添加的頭文件搜索路徑放在已有路徑的前面;
2. 這裏的AFTER|BEFORE 也可以控制;
添加共享庫
LINK_DIRECTORIES 和 TARGET_LINK_LIBRARIES
LINK_DIRECTORIES 的全部語法是:
LINK_DIRECTORIES(directory1 directory2 ...)
這個指令非常簡單,添加非標準的共享庫搜索路徑,比如,在工程內部同時存在共享庫和可執行二進制,在編譯時就需要指定一下這些共享庫的路徑。這個例子中我們沒有用到這個指令。
TARGET_LINK_LIBRARIES 的全部語法是:
TARGET_LINK_LIBRARIES(target library1 <debug | optimized> library2 ...)
ADD_SUBDIRECTORY 指令
ADD_SUBDIRECTORY(source_dir [binary_dir [EXCLUDE_FROM_ALL])
這個指令用於向當前工程添加存放源文件的子目錄,並可以指定中間二進制和目標二進制存
放的位置。E