使用CMake編譯C/C++程式(轉載)
阿新 • • 發佈:2022-05-11
官方手冊
作用
定義程式編譯規則
基本流程
- 編寫
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
對程式進行編譯生成。