官方手冊
CMake Tutorial
CMake Reference
作用
定義程序編譯規則
基本流程
- 編寫
CMakeLists.txt
- 通過
cmake
生成Makefile
-
make
編譯
編寫CMakeLists.txt
生成可執行文件的最簡單版本的CMakeLists.txt
# 規定該CMakeLists.txt適用的cmake最小版本,這里是 3.10
cmake_minimum_required(VERSION 3.10)
# 相當于visual studio項目名稱,這里是 Tutorial
project(Tutorial)
# 定義生成的可執行文件(程序)的名稱,
# 相當于visual studio項目屬性中的目標文件名,
# 這里是 Tutorial
# 用${PROJECT_NAME}替代,即可執行文件名稱等于項目名稱
# 和加入編譯的源文件路徑列表,路徑相對于`CMakeLists.txt`所在目錄,
# 相當于visual studio項目解決方案資源管理器中列出來的文件,這里是 tutroial.c
add_executable(Tutorial tutorial.c)
以上CMakeLists.txt定義的編譯規則是將源文件tutorial.c編譯成名為 Tutorial 的可執行文件。
常用語句
add_definitions() # 相當于visual studio項目屬性中C/C++-預處理器-預處理器定義
include_directories() # 相當于visual studio項目屬性中C/C++-常規-附加包含目錄
link_directories() # 相當于visual studio項目屬性中鏈接器-常規-附加庫目錄
link_libraries() # 相當于visual studio項目屬性中鏈接器-輸入-附加依賴項
set(A B) # 定義變量A內容為B
${A} # ${A}使用變量A,如上面${PROJECT_NAME}
file(GLOB SRC_FILE *.c) # 定義SRC_FILE為當前目錄下后綴為c的文件列表
aux_source_directory(./ SRC_FILES) # 定義SRC_FILES為當前目錄下的所有源文件列表,./ 表示當前目錄, ../表示上級目錄
message(STATUS ${A}) #輸出消息 內容為變量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>
一般用法是,新建一個文件夾,一般命名為build
,在終端進入該文件夾,然后調用cmake ../
,cmake
會在找到上級目錄找到CMakeLists.txt
,生成makefile
和一些其它文件。
make
編譯
在makefile
所在目錄,調用make
命令,會根據makefile
對程序進行編譯生成。