本文章僅作為個(gè)人筆記
CMake官網(wǎng)
-
CMakeLists.txt 個(gè)人理解
- $ 變量使用,例:
- ${CMAKE_CURRENT_SOURCE_DIR} 當(dāng)前項(xiàng)目根目錄
- cmake_minimum_required 限定最小cmake版本,例:
- cmake_minimum_required(VERSION 3.16) 設(shè)置最小cmake版本為3.16
- set 設(shè)置變量,例:
- set(CMAKE_CXX_STANDARD 14) 設(shè)置 CMAKE_CXX_STANDARD 為14
- file 組文件或文件夾,例:
- file(GLOB ODA_INCLUDE_DIRS
${CMAKE_CURRENT_SOURCE_DIR}/hello/inc
${CMAKE_CURRENT_SOURCE_DIR}/world/inc
${CMAKE_CURRENT_SOURCE_DIR}/hello_world/inc
) 將當(dāng)前項(xiàng)目的 hello/inc world/inc hello_world/inc 目錄放置于變量 ODA_INCLUDE_DIRS 內(nèi)
- file(GLOB ODA_INCLUDE_DIRS
- if 判斷,例:
- if (CMAKE_SYSTEM_NAME MATCHES "Windows") 判斷是否為windows系統(tǒng)
- message 輸出log,例:
- message("ODA_SO_FILES = ${ODA_SO_FILES}") 打印 ODA_SO_FILES 變量
- include_directories 引入頭文件目錄,使得目錄下的.h/.hpp文件可以被引用,例:
- include_directories(
${ODA_INCLUDE_DIRS}
) 引入 ODA_INCLUDE_DIRS 變量包含的目錄
- include_directories(
- link_directories 鏈接目錄,用于查找靜態(tài)或動(dòng)態(tài)庫,例:
- link_directories(
${ODA_SO_DIRS}
) 鏈接變量 ODA_SO_DIRS 下的所有目錄
- link_directories(
- add_executable 定義可執(zhí)行文件及包含的源文件,例:
- add_executable(ctemp
main.cpp
) 定義可執(zhí)行文件為ctemp,包含main.cpp 源文件
- add_executable(ctemp
- $ 變量使用,例:
-
target_link_libraries 鏈接第三方靜態(tài)/動(dòng)態(tài)庫,例:
- target_link_libraries(ctemp
-Wl,--start-group
${ODA_SO_FILES}
-Wl,--end-group
) 鏈接 ODA_SO_FILES 變量下的庫文件至ctemp
--Wl,--start-group 與 -Wl,--end-group 配合使用可以忽略多個(gè)文件的互相引用的順序關(guān)系
- target_link_libraries(ctemp
-
add_library 定義生成靜態(tài)/動(dòng)態(tài)庫,例:
- add_library(hello ${CMAKE_CURRENT_SOURCE_DIR}/src/hello.cpp) 定義生成hello的動(dòng)態(tài)庫
- add_library(hello STATIC ${CMAKE_CURRENT_SOURCE_DIR}/src/hello.cpp) 定義生成hello的靜態(tài)庫
- add_library(hello SHARED ${CMAKE_CURRENT_SOURCE_DIR}/src/hello.cpp) 定義生成hello的動(dòng)態(tài)庫
-
windows下打.a 包(msys2下運(yùn)行)
mkdir build cd build cmake .. -G "Unix Makefiles" make -
windows下打.lib 包(Develop PowerShell 下運(yùn)行)
mkdir build cd build cmake .. MSBuild hello.sln /t:Rebuild /p:Configuration=Release /p:Platform=x64 -
msys2安裝(win下編譯工具之一)
msys2下載下來是個(gè)可執(zhí)行文件 打開
一直下一步即可
-
安裝完打開 MingGW64 運(yùn)行
pacman --noconfirm -Syu pacman --noconfirm -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake pacman --noconfirm -S mingw-w64-x86_64-extra-cmake-modules make tar pacman --noconfirm -S mingw64/mingw-w64-x86_64-cyrus-sasl pacman --noconfirm -S git
具體語法自行在官網(wǎng)學(xué)習(xí)
本人創(chuàng)建一github demo,有需求可自行查看借鑒。