欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

CMake的簡(jiǎn)單應(yīng)用

 更新時(shí)間:2021年03月10日 11:34:25   作者:泣血  
這篇文章主要介紹了CMake的簡(jiǎn)單應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

 各種不同的Make 工具遵循著不同的規(guī)范和標(biāo)準(zhǔn),所執(zhí)行的 Makefile 格式也千差萬(wàn)別。如果軟件想跨平臺(tái),必須要保證能夠在不同平臺(tái)編譯,這就得為每一個(gè)Make工具寫(xiě)一次 Makefile ,這將是一件讓人抓狂的工作。使用CMake工具就可以很好的解決這個(gè)問(wèn)題。

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

  在 linux 平臺(tái)下使用 CMake 生成 Makefile 并編譯的流程如下:

  1. 編寫(xiě) CMake 配置文件 CMakeLists.txt 。

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

  3. 使用 make 命令進(jìn)行編譯。

語(yǔ)法

  CMake基本語(yǔ)法由命令、注釋和空格組成,其中命令是不區(qū)分大小寫(xiě)的。符號(hào) # 后面的內(nèi)容被認(rèn)為是注釋。命令由命令名稱、小括號(hào)和參數(shù)組成,參數(shù)之間使用空格進(jìn)行間隔。變量引用使用 ${VAR} 形式。

  command (args  ...)  #comment

常用命令:

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

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

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

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

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

  add_subdirectory(math)           # 添加 math 子目錄

  add_executable(Demo main.cc ...)       # 指定生成目標(biāo),第一個(gè)參數(shù)為目標(biāo)文件名

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

  target_link_libraries(Demo MathFunctions)    # 添加鏈接庫(kù)

獲取更多CMake信息:

  cmake --help

  cmake --help-command-list

  cmake --help-variable-list

示例代碼

示例代碼1:

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

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

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

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

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

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

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

父目錄中的 CMakeLists.txt :

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

子目錄中的 CMakeLists.txt:

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

編譯

  在編譯之前,首先要將CMakeLists.txt文件放在代碼目錄中。為了方便管理生成的makefile文件、目標(biāo)文件等文件,最好創(chuàng)建一個(gè)build目錄專門(mén)用來(lái)存放這些文件。在代碼目錄,依次執(zhí)行以下命令:

mkdir build
cd build
cmake ..
make

參考引用:

  1. http://www.hahack.com/codes/cmake/
  2. https://www.cnblogs.com/qixianyu/p/6574048.html

到此這篇關(guān)于CMake的簡(jiǎn)單應(yīng)用的文章就介紹到這了,更多相關(guān)CMake入門(mén)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)航班售票系統(tǒng) C語(yǔ)言實(shí)現(xiàn)航班管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)航班售票系統(tǒng) C語(yǔ)言實(shí)現(xiàn)航班管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)航班售票系統(tǒng),C語(yǔ)言實(shí)現(xiàn)航班管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C++中的異常實(shí)例詳解

    C++中的異常實(shí)例詳解

    異常處理是C++的一項(xiàng)語(yǔ)言機(jī)制,用于在程序中處理異常事件,下面這篇文章主要給大家介紹了關(guān)于C++中異常的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • C語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)串(堆分配存儲(chǔ)表示法)實(shí)例詳解

    C語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)串(堆分配存儲(chǔ)表示法)實(shí)例詳解

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)串(堆分配存儲(chǔ)表示法)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • c語(yǔ)言實(shí)現(xiàn)找最大值最小值位置查找

    c語(yǔ)言實(shí)現(xiàn)找最大值最小值位置查找

    這篇文章主要介紹了c語(yǔ)言實(shí)現(xiàn)找最大值最小值位置查找,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • C語(yǔ)言結(jié)構(gòu)體占用內(nèi)存深入講解

    C語(yǔ)言結(jié)構(gòu)體占用內(nèi)存深入講解

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言結(jié)構(gòu)體占用內(nèi)存的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C語(yǔ)言多組輸入使用方法

    C語(yǔ)言多組輸入使用方法

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言多組輸入使用的相關(guān)資料,在 C語(yǔ)言中可以使用循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)多組輸入,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • C++實(shí)現(xiàn)選擇排序(selectionSort)

    C++實(shí)現(xiàn)選擇排序(selectionSort)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)選擇排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++將字符串格式化的幾種方式總結(jié)

    C++將字符串格式化的幾種方式總結(jié)

    這篇文章主要介紹了C++將字符串格式化的幾種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C語(yǔ)言輪轉(zhuǎn)數(shù)組的三種實(shí)現(xiàn)

    C語(yǔ)言輪轉(zhuǎn)數(shù)組的三種實(shí)現(xiàn)

    輪轉(zhuǎn)數(shù)組是一種將數(shù)組元素循環(huán)移動(dòng)的處理方式,它通常用于解決一些需要對(duì)固定長(zhǎng)度的數(shù)組進(jìn)行循環(huán)滾動(dòng)處理的問(wèn)題,本文就介紹了C語(yǔ)言輪轉(zhuǎn)數(shù)組的三種實(shí)現(xiàn),感興趣的可以了解一下
    2023-08-08
  • C++實(shí)現(xiàn)并行計(jì)算的兩種方式

    C++實(shí)現(xiàn)并行計(jì)算的兩種方式

    本文介紹了使用C++實(shí)現(xiàn)并行計(jì)算的兩種方式,包括OpenMP和MPI,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03

最新評(píng)論