參考
- 官方手冊:cmake.org/
- CMake 入門實戰:www.hahack.com/codes/cmake…
CMake簡介
- Makefile是類unix環境下的類似於批處理的"指令碼"檔案。其基本語法是: 目標+依賴+命令,只有在目標檔案不存在,或目標比依賴的檔案更舊,命令才會被執行。
- make是用來執行Makefile的。
- Makefile+make可理解為類unix環境下的專案管理工具,但它太基礎了,抽象程度不高,而且在windows下不太友好,於是就有了跨平臺專案管理工具CMake, CMake是抽象層次更高的專案管理工具,CMake命令執行的CMakeLists.txt檔案,生成Makefile。
-
CMake is great. don't waste time on other C++ build tools, seriously.
- CMake是CLion IDE(JetBrains出品)唯一預設支援的構建工具。
例項
- 工程結構
- 程式碼檔案都在src目錄
- CMakeLists.txt檔案是使用CMake需要編寫的唯一檔案:
cmake_minimum_required(VERSION 2.6)
project(itest)
# C++標準
set(CMAKE_CXX_STANDARD 11)
# 指定參與編譯的原始檔
add_executable(itest src/main.cpp src/cal/Calculator.cpp src/cal/Calculator.h)
# 指定安裝路徑,make install 時運用
install (TARGETS itest DESTINATION bin)
install(DIRECTORY src/ DESTINATION include/itest FILES_MATCHING PATTERN "*.h")
# 設定不同build類別時的編譯引數
#set(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
複製程式碼
- debug和release是存放編譯中間和結果資料夾,cmake.sh是一個執行cmake和make命令的指令碼:
#!/bin/bash
# 父級目錄
base_dir=$(dirname $(pwd))
# 制定構建型別是debug
cmake $base_dir -DCMAKE_BUILD_TYPE=Debug
# 編譯
make
複製程式碼
- 執行
chmod a+x cmake.sh && ./cmake.sh
,完成整個構建過程,生成itest可執行程式