溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何正確的使用CMake

發布時間:2021-03-10 13:53:35 來源:億速云 閱讀:248 作者:Leah 欄目:開發技術

如何正確的使用CMake?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

CMake是一個比make更高級的編譯配置工具,它可以根據不同平臺、不同的編譯器,生成相應的Makefile。通過編寫CMakeLists.txt,可以控制生成的Makefile,從而控制編譯過程。CMake自動生成的Makefile不僅可以通過make命令構建項目,生成目標文件,還支持安裝(make install)、測試安裝的程序是否能正確執行(make test,或者ctest)、生成當前平臺的安裝包(make package)、生成源碼包(make package_source)、產生Dashboard顯示數據并上傳等高級功能,只要在CMakeLists.txt中簡單配置,就可以完成很多復雜的功能,包括寫測試用例。如果有嵌套目錄,子目錄下可以有自己的CMakeLists.txt。

  在 linux 平臺下使用 CMake 生成 Makefile 并編譯的流程如下:

  1. 編寫 CMake 配置文件 CMakeLists.txt 。

  2. 執行命令 cmake PATH 或者 ccmake PATH 生成 Makefile。其中, PATH 是 CMakeLists.txt 所在的目錄。

  3. 使用 make 命令進行編譯。

語法

  CMake基本語法由命令、注釋和空格組成,其中命令是不區分大小寫的。符號 # 后面的內容被認為是注釋。命令由命令名稱、小括號和參數組成,參數之間使用空格進行間隔。變量引用使用 ${VAR} 形式。

  command (args  ...)  #comment

常用命令:

    cmake_minimum_required (VERSION 2.8)  # CMake 最低版本號要求

  project (Demo)               # 指定項目的名稱

  set(SRCS main.cpp ...)             # 設置變量

  include_directories(/usr/include/jsoncpp)        # 添加頭文件目錄,比如使用的一些lib庫

  aux_source_directory(. DIR_SRCS)     # 查找當前目錄下的所有源文件,并將名稱保存到 DIR_SRCS 變量

  add_subdirectory(math)           # 添加 math 子目錄

  add_executable(Demo main.cc ...)       # 指定生成目標,第一個參數為目標文件名

  add_library(MathFunctions ${DIR_LIB_SRCS})   # 添加一個庫文件

  target_link_libraries(Demo MathFunctions)    # 添加鏈接庫

獲取更多CMake信息:

  cmake --help

  cmake --help-command-list

  cmake --help-variable-list

示例代碼

示例代碼1:

cmake_minimum_required(VERSION 2.8)    # CMake 最低版本號要求

set(CMAKE_CXX_FLAGS "-std=c++0x")      # 設置編譯參數
include_directories(/usr/include/jsoncpp) # 添加頭文件目錄

set(SRCS                     # 設置變量SRCS,將所有源文件添加到變量SRCS
  SamsungRequestResolver.cpp
  SamsungResolverContainer.cpp
  SamsungResponseResolver.cpp
  BanCat.cpp
  main.cpp
)

add_executable(framework ${SRCS})     # 指定生成目標
target_link_libraries(framework jsoncpp hiredis boost_system)  # 添加鏈接庫

示例代碼2:(來源于參考引用1)

代碼目錄如下所示,./Demo3目錄下有一個main.cc文件和一個math目錄。對于這種嵌套目錄的情況,需要在目錄 ./Demo3 和 ./Demo3/math 下各創建一個CMakeLists.txt。

./Demo3
  |
  +--- main.cc
  |
  +--- math/
     |
     +--- MathFunctions.cc
     |
     +--- MathFunctions.h

父目錄中的 CMakeLists.txt :

# CMake 最低版本號要求
cmake_minimum_required (VERSION 2.8)
# 項目信息
project (Demo3)
# 查找當前目錄下的所有源文件
# 并將名稱保存到 DIR_SRCS 變量
aux_source_directory(. DIR_SRCS)
# 添加 math 子目錄,math目錄下的CMakeLists.txt文件和源代碼會被處理
add_subdirectory(math)
# 指定生成目標Demo
add_executable(Demo main.cc)
# 添加鏈接庫
target_link_libraries(Demo MathFunctions)

子目錄中的 CMakeLists.txt:

 # 查找當前目錄下的所有源文件
 # 并將名稱保存到 DIR_LIB_SRCS 變量
 aux_source_directory(. DIR_LIB_SRCS)
 # 生成鏈接庫
 add_library(MathFunctions ${DIR_LIB_SRCS})

編譯

  在編譯之前,首先要將CMakeLists.txt文件放在代碼目錄中。為了方便管理生成的makefile文件、目標文件等文件,最好創建一個build目錄專門用來存放這些文件。在代碼目錄,依次執行以下命令:

mkdir build
cd build
cmake ..
make

關于如何正確的使用CMake問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女