1. 程式人生 > 其它 >使用CMake編譯C/C++程式(轉載)

使用CMake編譯C/C++程式(轉載)

官方手冊

CMake Tutorial
CMake Reference

作用

定義程式編譯規則

基本流程

  1. 編寫CMakeLists.txt
  2. 通過cmake生成Makefile
  3. 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對程式進行編譯生成。

參考檔案(原文連結)

  1. 使用CMake編譯C/C++程式
  2. 用VSCode和CMake編寫除錯C/C++