CMake 編寫筆記

本文章僅作為個(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)
    • 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 變量包含的目錄
    • link_directories 鏈接目錄,用于查找靜態(tài)或動(dòng)態(tài)庫,例:
      • link_directories(
        ${ODA_SO_DIRS}
        ) 鏈接變量 ODA_SO_DIRS 下的所有目錄
    • add_executable 定義可執(zhí)行文件及包含的源文件,例:
      • add_executable(ctemp
        main.cpp
        ) 定義可執(zhí)行文件為ctemp,包含main.cpp 源文件
  • 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)系
  • 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,有需求可自行查看借鑒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容