CMake幾個基本指令

2021-07-11 08:00:50 字數 2319 閱讀 3924

參考資料:

指令推薦大寫; 大小寫不敏感;

變數使用${}, if語句中直接使用變數,不需要${}

下面是乙個例子:

project (hello)

set(src_list main.c)

message(status "this is binary dir "

$)message(status "this is source dir "

$)add_executable(hello $)

說明:

project(name)
name工程名, 。這個指令隱式的定義了兩個 cmake 變數:

_binary_dir以及_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 $)
定義了這個工程會生成乙個檔名為 hello 的可執行檔案,相關的原始檔是 src_list 中定義的原始檔列表;

新增原檔案路徑:

aux_source_directory(. namevar)

aut_source_directory(ohterpath namevsr) #otherpath是原始檔搜尋路徑

add_executable(hello $)

標頭檔案搜尋路徑:

如果有多個資料夾中包含有原始檔, 可以使用下面的命令:

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 library2 ...)
add_subdirectory 指令

add_subdirectory(source_dir [binary_dir [exclude_from_all])
這個指令用於向當前工程新增存放原始檔的子目錄,並可以指定中間二進位制和目標二進位制存

放的位置。e

CMake常用指令

cmake minimum required version 3.6 專案名稱 project boostcoroutinedemo c 標準 set cmake cxx standard 11 指定生成的版本 set cmake build type debug 指定編譯選項 set cmake ...

cmake指令系列

指令 變數 指令作用 cmake minimum required cmake最低版本要求 project 新增專案名稱 add executable 指定輸出檔案 add subdirectory 新增專案子資料夾 set設定變數 install 將專案安裝在系統的環境變數 include dir...

CMake 基本用法

1.最基本的cmakelists 檔案 它將 main.c 編譯為 hello 的可執行檔案 project hello 專案名稱 set src list main.c 原始檔 add executable hello 可執行檔案cmake 是強烈推薦外部編譯的,內部編譯會生成一些無法自動刪除的中...