CMake簡易入門

fxm547發表於2018-02-03

首發於fxm5547的部落格

參考

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可執行程式
    圖片

相關文章