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