CMake幾個基本指令

參考資料:

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_DIRPROJECT_SOURCE_DIR變量,他們的值分別跟 HELLO_BINARY_DIRHELLO_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

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