官方手冊
CMake Tutorial
CMake Reference
作用
定義程序編譯規(guī)則
基本流程
- 編寫
CMakeLists.txt
- 通過
cmake
生成Makefile
-
make
編譯
編寫CMakeLists.txt
生成可執(zhí)行文件的最簡單版本的CMakeLists.txt
# 規(guī)定該CMakeLists.txt適用的cmake最小版本,這里是 3.10
cmake_minimum_required(VERSION 3.10)
# 相當(dāng)于visual studio項(xiàng)目名稱贩据,這里是 Tutorial
project(Tutorial)
# 定義生成的可執(zhí)行文件(程序)的名稱颤专,
# 相當(dāng)于visual studio項(xiàng)目屬性中的目標(biāo)文件名藻茂,
# 這里是 Tutorial
# 用${PROJECT_NAME}替代坟漱,即可執(zhí)行文件名稱等于項(xiàng)目名稱
# 和加入編譯的源文件路徑列表铺遂,路徑相對于`CMakeLists.txt`所在目錄胳嘲,
# 相當(dāng)于visual studio項(xiàng)目解決方案資源管理器中列出來的文件甚带,這里是 tutroial.c
add_executable(Tutorial tutorial.c)
以上CMakeLists.txt定義的編譯規(guī)則是將源文件tutorial.c編譯成名為 Tutorial 的可執(zhí)行文件温算。
常用語句
add_definitions() # 相當(dāng)于visual studio項(xiàng)目屬性中C/C++-預(yù)處理器-預(yù)處理器定義
include_directories() # 相當(dāng)于visual studio項(xiàng)目屬性中C/C++-常規(guī)-附加包含目錄
link_directories() # 相當(dāng)于visual studio項(xiàng)目屬性中鏈接器-常規(guī)-附加庫目錄
link_libraries() # 相當(dāng)于visual studio項(xiàng)目屬性中鏈接器-輸入-附加依賴項(xiàng)
set(A B) # 定義變量A內(nèi)容為B
${A} # ${A}使用變量A,如上面${PROJECT_NAME}
file(GLOB SRC_FILE *.c) # 定義SRC_FILE為當(dāng)前目錄下后綴為c的文件列表
aux_source_directory(./ SRC_FILES) # 定義SRC_FILES為當(dāng)前目錄下的所有源文件列表怜校,./ 表示當(dāng)前目錄, ../表示上級目錄
message(STATUS ${A}) #輸出消息 內(nèi)容為變量A的值
通過cmake
生成Makefile
Usage
cmake [options] <path-to-source>
cmake [options] <path-to-existing-build>
cmake [options] -S <path-to-source> -B <path-to-build>
一般用法是注竿,新建一個(gè)文件夾茄茁,一般命名為build
,在終端進(jìn)入該文件夾巩割,然后調(diào)用cmake ../
裙顽,cmake
會(huì)在找到上級目錄找到CMakeLists.txt
,生成makefile
和一些其它文件宣谈。
make
編譯
在makefile
所在目錄愈犹,調(diào)用make
命令,會(huì)根據(jù)makefile
對程序進(jìn)行編譯生成闻丑。