CMake入門——簡單CMakeLists的編寫


https://www.cnblogs.com/Satan666/p/12654925.html

 

CMake簡介:

CMake是一種跨平台的開源項目管理工具,所做的事其實就是告訴編譯器如何去編譯鏈接源代碼。與之相似的是直接編寫makefile文件,但makefile最大的缺點就是不能跨平台,一旦更換環境就要重新編寫,於是我們可以使用CMake編寫CMakeLists文件來解決此問題。

檢查是否安裝CMake

首先檢查是否安裝CMake,在終端輸入cmake --version來檢查,若顯示未安裝,可以使用sudo apt-get install camke ( ubuntu),或者brew install cmake (macos),windows直接去官網下載,來安裝CMake。

常用指令

復制代碼
#cmake最小版本需求
cmake_minimum_required(VERSION xxx)

#設置此項目的名稱
project(xxx) 

#生成可執行文件target ,后面填寫的是生成此可執行文件所依賴的源文件列表。
add_executable(target target_source_codes) 

# 設置一個名字var_name 的變量,同時給此變量賦值為var_value
SET(var_name var_value)

# 指定編譯器
# CMAKE_C_FLAGS_DEBUG          ----  C 編譯器
# CMAKE_CXX_FLAGS_DEBUG        ----  C++ 編譯器
# -std=c++11  使用 C++11
# -g:只是編譯器,在編譯的時候,產生調試信息。
# -Wall:生成所有警告信息。一下是具體的選項,可以單獨使用
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11   -g  -wall  ")

#指定編譯類型,debug 或者為 release
# debug 會生成相關調試信息,可以使用 GDB 進行
# release 不會生成調試信息。當無法進行調試時查看此處是否設置為 debug.
set(CMAKE_BUILD_TYPE Debug)

# 打印消息
MESSAGE("MSG") 

#給變量var_name賦值為var_value,comment是此變量的注釋,和SET 有類似的功效,用於給某變量設置默認值
option(var_name "comment" var_value) 

# 添加include路徑,也就是頭文件路徑
include_directories(xxx) 

# 調用xxx子目錄的CMakeLists.txt執行
add_subdirectory(xxx) 

# 給編譯器添加xxx參數
add_compile_options(xxx)

# 給編譯器添加庫目錄,
link_directories(xxx)

# 生成庫文件,SHARED代表動態庫,STATIC代表靜態庫, 最后一個參數代表此庫的源文件列表
add_library(lib_name SHARED or STATIC lib_source_code) 

# 給目標添加依賴庫
target_link_libraries(target_name lib_name ...) 
復制代碼

簡單應用

下圖是一般的項目文件格式,include 存放頭文件,src存放源代碼文件,build存放臨時編譯文件。

 

 假設工程文件夾名為Test,我們可以將CMakeLists.txt文件放在Test文件夾下,也就是src,include的同級目錄下,以下是簡單的CMakeLists文件編寫格式。

復制代碼
# 最低指定的CMake版本
cmake_minimum_required(VERSION 3.0)

# 括號里面填你的工程名
PROJECT(Test)

# 頭文件路徑
INCLUDE_DIRECTORIES(include)
INCLUDE_DIRECTORIES(/usr/local/include/)

# 查找src下的所有cpp文件,然后將結果存進指定變量名(這里是DIR_SRCS)
AUX_SOURCE_DIRECTORY(src DIR_SRCS)

# 指定語言要求,以下命令為c++ 11
SET(CMAKE_CXX_STANDARD 11)

# 生成可執行文件,生成的test即為可執行文件
add_executable(test ${DIR_SRCS})
復制代碼

由於該過程中會產生很多中間文件,因此我們在build文件夾下使用cmake命令,這樣這些文件就都放在build文件夾下,然后make運行就好:

cd build
cmake ..
make
./test
 
0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM