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

CMake語法及CMakeList.txt簡單使用小結

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

CMake簡單介紹

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

CMake可以在Linux上自動生成makefile,在Windows下可以生成vs解決方案sln,對于大規(guī)??缙脚_項目絕對是首選。相比于makefile,CMake語法要簡單的多。自vs2017之后vs便支持CMake語法,到目前vs2022仍然支持,其效果之不必多說。

TIPS:以下均使用vs2022進行介紹。

創(chuàng)建項目

效果圖

效果圖

TIPS:解決方案就是項目的合集,項目是對應每一個靜態(tài)庫,動態(tài)庫和可執(zhí)行文件的編譯目標。

創(chuàng)建完成

效果圖

TIPS:建議紅色框框里面的內容一定要看一遍。

效果圖

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

CMake語法

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

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

常用的命令

cmake_minimum_required

設置項目要求的CMake最低版本號,如果當前版本的CMake低于所需的值,它將停止處理項目并報告錯誤。注意務必在project之前調用該命令,一般是在CMakeLists.txt文件開頭調用。命令格式為:

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

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

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

參數介紹:

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

使用示例:

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

project

  為整個工程設置一個工程名。命名格式為:

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

使用示例:

project ("CMakeClient0331")

set

將一個CMAKE變量設置為給定值。命名格式為:

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

使用示例:

set(COCOS2D_ROOT ${CMAKE_SOURCE_DIR}/cocos2d)

常用的變量

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

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

內置宏

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

簡單使用實例

以下項目中的CMakeLists.txt文件內容如下(應用場景為:生成客戶端和服務端的可執(zhí)行文件,同時指定生成可執(zhí)行文件的目錄),根目錄的CMakeLists.txt無需修改。

效果圖

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

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

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

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

# TODO: 如有需要,請?zhí)砑訙y試并安裝目標。

運行效果展示

效果圖

效果圖

效果圖

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

相關文章

  • VC實現圖片拖拽及動畫的實例

    VC實現圖片拖拽及動畫的實例

    這篇文章介紹了VC實現圖片拖拽及動畫的實例,有需要的朋友可以參考一下
    2013-08-08
  • 基于C語言實現簡單五子棋游戲

    基于C語言實現簡單五子棋游戲

    這篇文章主要為大家詳細介紹了基于C語言實現簡單五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 深入探討:宏、內聯函數與普通函數的區(qū)別

    深入探討:宏、內聯函數與普通函數的區(qū)別

    本篇文章是對宏、內聯函數與普通函數的區(qū)別進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++中的移動構造函數及move語句示例詳解

    C++中的移動構造函數及move語句示例詳解

    這篇文章主要給大家介紹了關于C++中移動構造函數及move語句的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C++具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-10-10
  • C++學習之虛函數表與多態(tài)詳解

    C++學習之虛函數表與多態(tài)詳解

    這篇文章主要為大家詳細介紹了C++中虛函數表與多態(tài)的相關知識,文中的示例代碼講解詳細,對我們學習C++有一定的幫助,感興趣的小伙伴可以了解一下
    2023-03-03
  • C 語言restrict 關鍵字的使用淺談

    C 語言restrict 關鍵字的使用淺談

    C 語言restrict 關鍵字的使用淺談,需要的朋友可以參考一下
    2013-04-04
  • C語言中用于產生隨機數的函數使用方法總結

    C語言中用于產生隨機數的函數使用方法總結

    這篇文章主要介紹了C語言中用于產生隨機數的函數使用方法總結,分別介紹了rand()函數和srand()函數以及封裝出的arc4random()函數,需要的朋友可以參考下
    2016-05-05
  • Qt一個進程運行另一個進程的實現方法

    Qt一個進程運行另一個進程的實現方法

    本文主要介紹了Qt一個進程運行另一個進程的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • C語言如何利用ASCII碼表統計字符串每個字符出現的次數

    C語言如何利用ASCII碼表統計字符串每個字符出現的次數

    這篇文章主要介紹了C語言如何利用ASCII碼表統計字符串每個字符出現的次數,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C++11生成隨機數(random庫)的使用

    C++11生成隨機數(random庫)的使用

    隨機數在很多地方都可以用到,本文主要介紹了C++11生成隨機數(random庫)的使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論