最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

CMake語(yǔ)法及CMakeList.txt簡(jiǎn)單使用小結(jié)

 更新時(shí)間:2022年05月07日 09:27:23   作者:ufgnix0802  
Cmake主要用于開發(fā)跨平臺(tái)的C++項(xiàng)目,本文主要介紹了CMake語(yǔ)法及CMakeList.txt簡(jiǎn)單使用小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下

CMake簡(jiǎn)單介紹

Cmake主要用于開發(fā)跨平臺(tái)的C++項(xiàng)目,對(duì)于Windows程序員來(lái)說(shuō),在Linux上開發(fā)C++程序會(huì)非常困難,一來(lái)沒用過makefile,其語(yǔ)法非常生疏難懂,二來(lái)visual studio編譯器實(shí)在優(yōu)點(diǎn)太多(目前最新推出的vs2022中開啟效率得到了質(zhì)的提升,而且內(nèi)置的IntelliCode更是直呼內(nèi)行)。這就導(dǎo)致C++不同于其他語(yǔ)言,硬生生催生出Windows程序員和Linux程序員兩個(gè)群體,直到出現(xiàn)CMake這個(gè)局面才被打破。

CMake可以在Linux上自動(dòng)生成makefile,在Windows下可以生成vs解決方案sln,對(duì)于大規(guī)??缙脚_(tái)項(xiàng)目絕對(duì)是首選。相比于makefile,CMake語(yǔ)法要簡(jiǎn)單的多。自vs2017之后vs便支持CMake語(yǔ)法,到目前vs2022仍然支持,其效果之不必多說(shuō)。

TIPS:以下均使用vs2022進(jìn)行介紹。

創(chuàng)建項(xiàng)目

效果圖

效果圖

TIPS:解決方案就是項(xiàng)目的合集,項(xiàng)目是對(duì)應(yīng)每一個(gè)靜態(tài)庫(kù),動(dòng)態(tài)庫(kù)和可執(zhí)行文件的編譯目標(biāo)。

創(chuàng)建完成

效果圖

TIPS:建議紅色框框里面的內(nèi)容一定要看一遍。

效果圖

用CMake構(gòu)建一個(gè)項(xiàng)目工程,是通過一個(gè)或多個(gè)CMakeLists.txt文件來(lái)控制的。CMakeLists.txt中包含一系列命令來(lái)描述需要執(zhí)行的構(gòu)建。

CMake語(yǔ)法

在CMakeLists.txt中的命令的語(yǔ)法,都是形如下面這種格式:

command (args ...)
  • command:命令的名字
  • args:參數(shù)列表。多個(gè)參數(shù)使用空格隔開。

常用的命令

cmake_minimum_required

設(shè)置項(xiàng)目要求的CMake最低版本號(hào),如果當(dāng)前版本的CMake低于所需的值,它將停止處理項(xiàng)目并報(bào)告錯(cuò)誤。注意務(wù)必在project之前調(diào)用該命令,一般是在CMakeLists.txt文件開頭調(diào)用。命令格式為:

cmake_minimum_required(VERSION major.minor[.patch[.tweak]] [FATAL_ERROR])

使用示例:

cmake_minimum_required(VERSION 2.8.5)
cmake_minimum_required(VERSION 3.8)

add_executable

使用指定的源文件給項(xiàng)目添加一個(gè)可執(zhí)行文件。命令格式為:

add_executable(<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 [source2 ...])

參數(shù)介紹:

  • name:該命令調(diào)用列出的源文件來(lái)構(gòu)建的可執(zhí)行目標(biāo)。 對(duì)應(yīng)于邏輯目標(biāo)名稱,在項(xiàng)目中必須是全局唯一的。構(gòu)建的可執(zhí)行文件的實(shí)際文件名是基于本機(jī)平臺(tái)的約定。
  • WIN32:如果給出WIN32,則在創(chuàng)建的目標(biāo)上設(shè)置屬性WIN32_EXECUTABLE。
  • MACOSX_BUNDLE:如果給定MACOSX_BUNDLE,將在創(chuàng)建的目標(biāo)上設(shè)置相應(yīng)的屬性。
  • EXCLUDE_FROM_ALL:如果給定EXCLUDE_FROM_ALL,將在創(chuàng)建的目標(biāo)上設(shè)置相應(yīng)的屬性。
  • source:源碼列表。

使用示例:

add_executable (CMakeClient0331 "CMakeClient0331.cpp" "CMakeClient0331.h")

project

  為整個(gè)工程設(shè)置一個(gè)工程名。命名格式為:

project (<PROJECT-NAME> [LANGUAGES] [<language-name>...])
project (<PROJECT-NAME> [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]] [LANGUAGES<language-name>...])

使用示例:

project ("CMakeClient0331")

set

將一個(gè)CMAKE變量設(shè)置為給定值。命名格式為:

set(<variable> <value>... [PARENT_SCOPE])

使用示例:

set(COCOS2D_ROOT ${CMAKE_SOURCE_DIR}/cocos2d)

常用的變量

使用${ }進(jìn)行變量的引用。例如:message(${CMAKE_VERSION}),表示向用戶顯示cmake的完整版本號(hào)。CMake還提供了很多有用的變量。以下僅列舉常用的變量:

  • CMAKE_BINARY_DIR:構(gòu)建樹的頂層路徑
  • CMAKE_COMMAND:指向CMake可執(zhí)行文件的完整路徑
  • CMAKE_CURRENT_BINARY_DIR:當(dāng)前正在被處理的二進(jìn)制目錄的路徑。
  • CMAKE_CURRENT_SOURCE_DIR:指向正在被處理的源碼目錄的路徑。
  • CMAKE_HOME_DIRECTORY:指向源碼樹頂層的路徑。
  • CMAKE_PROJECT_NAME:當(dāng)前工程的工程名。
  • CMAKE_ROOT:CMake的安裝路徑。
  • CMAKE_SOURCE_DIR:源碼樹的頂層路徑。
  • CMAKE_VERSION:cmake的完整版本號(hào)。
  • PROJECT_BINARY_DIR:指向當(dāng)前編譯工程構(gòu)建的全路徑。
  • <PROJECT-NAME>_BINARY_DIR:指向當(dāng)前編譯工程構(gòu)建的全路徑。
  • <PROJECT-NAME>_SOURCE_DIR:指向構(gòu)建工程的全路徑。
  • PROJECT_SOURCE_DIR:指向構(gòu)建工程的全路徑。
  • PROJECT_NAME:project命令傳遞的工程名參數(shù)。
  • <PROJECT-NAME>_VERSION:項(xiàng)目的完整版本號(hào)。

內(nèi)置宏

  • EXECUTABLE_OUTPUT_PATH :用于確定可執(zhí)行文件的輸出路徑
  • CMAKE_ARCHIVE_OUTPUT_DIRECTORY:靜態(tài)庫(kù)lib的輸出路徑
  • CMAKE_DEBUG_POSTFIX:設(shè)置Debug版本下的庫(kù)文件后綴名
  • CMAKE_RELEASE_POSTFIX:設(shè)置Release版本下庫(kù)文件的后綴名

簡(jiǎn)單使用實(shí)例

以下項(xiàng)目中的CMakeLists.txt文件內(nèi)容如下(應(yīng)用場(chǎng)景為:生成客戶端和服務(wù)端的可執(zhí)行文件,同時(shí)指定生成可執(zhí)行文件的目錄),根目錄的CMakeLists.txt無(wú)需修改。

效果圖

# CMakeList.txt: Server0327 的 CMake 項(xiàng)目,在此處包括源代碼并定義
# 項(xiàng)目特定的邏輯。
#
cmake_minimum_required (VERSION 3.8)

#exe程序的路徑
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin)

# 將源代碼添加到此項(xiàng)目的可執(zhí)行文件。
add_executable (Server "Server0327.cpp" "Server0327.h")

add_executable (Client "CMakeClient0331.cpp" "CMakeClient0331.h")

# TODO: 如有需要,請(qǐng)?zhí)砑訙y(cè)試并安裝目標(biāo)。

運(yùn)行效果展示

效果圖

效果圖

效果圖

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

相關(guān)文章

  • C++深入講解類與封裝的概念與使用

    C++深入講解類與封裝的概念與使用

    我們都知道C++有三大特性:封裝、繼承、多態(tài),現(xiàn)在我們來(lái)總結(jié)一下封裝的相關(guān)知識(shí)與類的概念,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-04-04
  • c++ Qt信號(hào)槽原理

    c++ Qt信號(hào)槽原理

    這篇文章主要介紹了c++ Qt信號(hào)槽原理的相關(guān)資料,幫助大家更好的理解和使用c++,感興趣的朋友可以了解下
    2021-02-02
  • C語(yǔ)言實(shí)現(xiàn)電腦關(guān)機(jī)程序

    C語(yǔ)言實(shí)現(xiàn)電腦關(guān)機(jī)程序

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)電腦關(guān)機(jī)程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • VC自定義消息響應(yīng)函數(shù)postmessage用法示例

    VC自定義消息響應(yīng)函數(shù)postmessage用法示例

    這篇文章主要介紹了VC自定義消息響應(yīng)函數(shù)postmessage用法示例,并對(duì)比說(shuō)明了postmessage與sendmessage的用法區(qū)別,需要的朋友可以參考下
    2014-10-10
  • C++實(shí)現(xiàn)LeetCode(156.二叉樹的上下顛倒)

    C++實(shí)現(xiàn)LeetCode(156.二叉樹的上下顛倒)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(156.二叉樹的上下顛倒),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++和C的混合編譯的項(xiàng)目實(shí)踐

    C++和C的混合編譯的項(xiàng)目實(shí)踐

    本文主要介紹了C++和C的混合編譯的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • C++左值與右值,右值引用,移動(dòng)語(yǔ)義與完美轉(zhuǎn)發(fā)詳解

    C++左值與右值,右值引用,移動(dòng)語(yǔ)義與完美轉(zhuǎn)發(fā)詳解

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • C語(yǔ)言調(diào)用攝像頭生成avi視頻程序

    C語(yǔ)言調(diào)用攝像頭生成avi視頻程序

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言如何調(diào)用攝像頭生成avi視頻程序,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下
    2023-11-11
  • C++ 函數(shù)重載詳情介紹

    C++ 函數(shù)重載詳情介紹

    這篇文章主要介紹了C++ 函數(shù)重載詳情,函數(shù)重載還有一個(gè)別名叫函數(shù)多態(tài),函數(shù)多態(tài)是C++在C語(yǔ)言基礎(chǔ)上的新特性,它可以讓我們使用多個(gè)同名函數(shù),下面來(lái)看看文章具體內(nèi)容的介紹
    2021-11-11
  • C++實(shí)現(xiàn)讀取特定路徑下文件夾及文件名的方法

    C++實(shí)現(xiàn)讀取特定路徑下文件夾及文件名的方法

    這篇文章主要介紹了C++實(shí)現(xiàn)讀取特定路徑下文件夾及文件名的方法,需要的朋友可以參考下
    2014-07-07

最新評(píng)論

藁城市| 竹山县| 荣成市| 淮滨县| 忻州市| 汉源县| 晴隆县| 中江县| 江孜县| 金塔县| 沙坪坝区| 志丹县| 汉阴县| 白玉县| 兰考县| 大同市| 当阳市| 北辰区| 当阳市| 静宁县| 高平市| 三台县| 山阳县| 尼玛县| 沙雅县| 湖口县| 环江| 靖宇县| 济南市| 遂宁市| 安塞县| 温泉县| 松江区| 黑山县| 正蓝旗| 施甸县| 保德县| 奈曼旗| 刚察县| 安化县| 吴江市|