[C++][CMake][CMake基礎]詳細講解

目錄

  • 1.CMake簡介
  • 2.大小寫?
  • 3.注釋
    • 1.注釋行
    • 2.注釋塊
  • 4.日志

1.CMake簡介

  • CMake是一個項目構建工具,并且是跨平臺

  • 問題 – 解決

    • 如果自己動手寫Makefile,會發現,Makefile通常依賴于當前的編譯平臺,而且編寫Makefile的工作量比較大,解決依賴關系時也容易出錯
    • 而CMake恰好能解決上述問題, 其允許開發者指定整個工程的編譯流程,再根據編譯平臺,自動生成本地化的Makefile和工程文件,最后用戶只需make編譯即可
  • 可以把CMake看成一款自動生成Makefile的工具,其編譯流程如下圖

  • CMake優點總結

    • 跨平臺
    • 能夠管理大型項目
    • 簡化編譯構建過程和編譯過程
    • 可擴展:可以為CMake編寫特定功能的模塊,擴充CMake功能

2.大小寫?

  • CMake支持大寫、小寫、混合大小寫的命令
  • 如果在編寫CMakeLists.txt文件時使用的工具有對應的命令提示,那么大小寫隨緣即可,不用太過在意

3.注釋

1.注釋行

  • CMake使用#進行行注釋,可以放在任何位置
    # 這是一個CMakeLists.txt文件
    

2.注釋塊

  • CMake使用#[[]]進行塊注釋
    #[[這是一個CMakeLists.txt文件
    Die
    SnowK]]
    

4.日志

  • 在CMake中可以用命令顯示一條消息,該命令的名字為message
  • 語法
    message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] "message to display" ...)
    
  • 狀態參數
    • (無):重要消息
    • STATUS:非重要消息
    • WARNING:CMake警告,會繼續執行
    • AUTHOR_WARNING:CMake警告(dev),會繼續執行
    • SEND_ERROR:CMake錯誤,繼續執行,但是會跳過生成的步驟
    • FATAL_ERROR:CMake錯誤,終止所有處理過程
  • 顯示區域
    • CMake的命令行工具會在stdout上顯示STATUS消息,在stderr上顯示其他所有消息
    • CMake的GUI會在它的log區域顯示所有消息
  • CMake警告和錯誤消息的文本顯示使用的是一種簡單的標記語言
    • 文本沒有縮進
    • 超過長度的行會回卷
    • 段落之間以新行做為分隔符
  • 示例
    # 輸出一般日志信息
    message(STATUS "source path: ${PROJECT_SOURCE_DIR}")
    # 輸出警告信息
    message(WARNING "source path: ${PROJECT_SOURCE_DIR}")
    # 輸出錯誤信息
    message(FATAL_ERROR "source path: ${PROJECT_SOURCE_DIR}")
    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41029.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41029.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41029.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue的學習--day3

1、嘗試使用json文件模擬增刪改查 json server:準備一份自己的數據(這里我用的是老師給的)。 轉到d盤,然后打開json文件: 下面模擬增刪改查: 借助工具postman或apifox或apipost: 這里我下載了apifox&…

前端之CSS篇--面試題總結

CSS的特性:繼承性、層疊性、優先級 優先級:寫css樣式的時候,會給同一個元素添加多個樣式,此時誰的權重搞就顯示誰的樣式。 !important >行內樣式>id>類>標簽>全局選擇器 隱藏元素的方法 display:none 元素在頁面…

產品公告 | MemFire Cloud 現已支持微信授權登錄,為移動應用帶來更便捷的認證服務

MemFire Cloud推出的“開箱即用”的后端服務,提供了云數據庫、身份驗證與授權、云存儲、靜態托管、實時realtime、自動生成API等功能,本次升級新增/優化功能如下: 標題微信授權登錄(移動應用) 為了順應國內用戶的使用…

Python面試題:如何在 Python 中實現單例模式?

在 Python 中,有多種方法可以實現單例模式(Singleton Pattern)。單例模式是一種設計模式,確保一個類只有一個實例,并提供一個全局訪問點。以下是幾種常見的方法來實現單例模式: 方法一:使用類變…

Elasticsearch:Ingest architectures - 攝取架構

我們提供各種采集架構,以滿足各種用例和網絡配置的需求。 要將數據采集到 Elasticsearch,請使用最符合你的需求和用例的選項。對于許多用戶和用例來說,最簡單的方法是使用 Elastic Agent 采集數據并將其發送到 Elasticsearch。Elastic Agent…

深度學習——深度學習中感受野的計算

感受野 在卷積神經網絡(CNN)中,感受野(Receptive Field) 是一個非常重要的概念。它描述了網絡中某一層的輸出(通常是特征圖上的一個像素點)所對應的輸入圖像上的空間范圍。這個范圍代表了該輸出…

【CSS】了解grid-template-areas屬性

grid-template-areas 屬性是 CSS Grid 布局中一個非常有用的特性,它允許你通過命名網格區域(grid areas)來直接控制網格項目的布局。這個屬性通過引用網格容器內部網格項目的名稱來定義網格區域的布局,使得布局的設計更加直觀和易…

SARscape——地理編碼與輻射定標

目錄 一、算法原理1、概述2、參考文獻 二、軟件操作三、結果展示1、原始圖像2、處理結果 一、算法原理 1、概述 SAR系統觀測到的是電磁波入射地球表面后反射(后向散射)的雷達脈沖的強度和相位信息。這個信息編碼到雷達坐標系統下,即斜距坐標…

DataFrame 的常用操作

DataFrame是什么? DataFrame 是一種用于處理和分析數據的二維標簽數據結構。它類似于Excel中的電子表格或數據庫中的表格,由行和列組成。每個列可以是不同的數據類型(如整數、浮點數、字符串等),并且可以進行各種數據操…

vb與數據庫編程

第一節 一、數據庫基礎知識 數據庫的概念 數據庫是按照數據結構來組織、存儲和管理數據的倉庫。 它可以存儲大量的數據,并提供高效的數據訪問和管理功能。 數據庫的類型 關系型數據庫:如 SQL Server、MySQL、Oracle 等,以表格形式存儲數據,通過關系(如主鍵和外鍵)來關聯不…

數據結構之二叉樹概念

數據結構之二叉樹 二叉樹簡介分類普通二叉樹平衡二叉樹滿二叉樹二叉搜索樹(二叉排序樹、二叉查找樹),平衡二叉樹紅黑樹 B樹類型B樹(B-樹、B_樹)B樹B*樹 二叉樹 簡介 二叉樹(Binary Tree) :是一種非常重要…

RPC框架之Dubbo

Dubbo 是一款高性能、輕量級的開源 Java RPC(Remote Procedure Call)框架,由阿里巴巴集團于2011年發布。Dubbo 主要用于實現基于微服務架構的分布式應用,通過提供服務注冊與發現、負載均衡、容錯等功能,極大地簡化了服…

頭歌資源庫(19)在排序數組中查找元素的首尾位置

一、 問題描述 二、算法思想 該問題可以通過二分查找的思想來解決。 首先,我們可以使用二分查找找到目標值在數組中的任意一個位置(即該位置的值等于目標值)。假設找到的位置為mid。 接下來,我們需要在mid的左邊和右邊分別找到…

UNIAPP_頂部導航欄右側添加uni-icons圖標,并綁定點擊事件,自定義導航欄右側圖標

效果 1、導入插件 uni-icons插件:https://ext.dcloud.net.cn/plugin?nameuni-icons 復制 uniicons.ttf 文件到 static/fonts/ 下 僅需要那個uniicons.ttf文件,不引入插件、單獨把那個文件下載到本地也是可以的 2、配置頁面 "app-plus":…

Python爬蟲+數據分析+數據可視化圖形-爬取高校排名數據

①本文主要使用python 爬取了中國大學排名前30的大學信息,并進行了數據處理及分析,是一個比較經典的python爬蟲和分析項目 ②主要內容:爬蟲數據預處理數據可視化分析 完整代碼請看這里拿👇↓↓↓

Flutter本地數據持久化的幾種方式

目錄 前言 一、shared_preferences 1.添加依賴 2.保存數據 3.讀取數據 4.移除數據 5.Shared_preferences的優缺點 6.完整的示例代碼 二、path_provider 1.導入path_provider 2.創建文件讀寫的目錄 3.向文件中寫入數據 4.從文件中讀取數據 5.完整的示例代碼 三、…

Mac本地部署大模型-單機運行

前些天在一臺linux服務器(8核,32G內存,無顯卡)使用ollama運行阿里通義千問Qwen1.5和Qwen2.0低參數版本大模型,Qwen2-1.5B可以運行,但是推理速度有些慢。 一直還沒有嘗試在macbook上運行測試大模型&#xf…

我這個經驗好找嵌入式的工作嗎?

大家好,我是麥鴿。最近網友的提問,這樣的經驗,好找嵌入式的工作嗎? 下面是網友的情況: 本人目前大二機器人工程,未來想要入職嵌入式行業,有robomaster比賽經驗本人負責電控,但是由于…

基因組學系列3:基因分型Phasing與單倍型參考序列HRC

1. 基因分型Phasing概念 基因分型,也稱為基因定相、單倍體分型、單倍體構建等,即將一個二倍體(或多倍體)基因組上的等位基因(或雜合位點)正確定位到父親或母親的染色體上,最終使得來自同一親本…

相親交友APP系統婚戀交友社交軟件開發語音視頻聊天平臺定制開發-婚戀相親交友軟件平臺介紹——app小程序開發定制

互聯網飛速發展的時代,相親交友軟件成為了許多年輕人首選的相親方式,越來越多的單身男女希望在婚戀交友軟件平臺上尋找靈魂伴侶,相親交友軟件因此具有很高的市場價值。 多客婚戀相親交友系統是一款定位高端,到手就能運營的成熟婚戀…