色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

cmake是什么?cmake的特性和編譯原理(cmake原理和cmake編譯過程)

技術讓夢想更偉大 ? 來源:技術讓夢想更偉大 ? 作者:技術讓夢想更偉大 ? 2023-07-18 10:53 ? 次閱讀

一、cmake是什么?

CMake是一個開源、跨平臺的工具系列,是用來構建、測試和打包軟件。

CMake使用平臺無關的配置文件來控制軟件編譯過程,并生成可在您選擇的編譯器環境中使用項目文件,比如可以生成vs項目文件或者makefile。CMake工具套件由Kitware公司創建,以滿足ITK和VTK等開源項目對跨平臺構建環境的需求。Kitware是一家從事醫療計算,高性能的可視化和計算,數據和分析,計算機視覺的公司。該公司成立于1998年。

二、為什么現在都在用cmake?

1 為什么用cmake,這里有兩個問題,首先要問為什么我需要一個好的構建系統?,下面是主要的原因:

· 你想避免硬編碼路徑

· 您需要在多臺計算機上構建一個包

· 你想使用 CI(持續集成)

· 你需要支持不同的操作系統

· 你想支持多個編譯器

· 您想使用 IDE,但不是所有情況

· 你想描述你的程序的邏輯結構,而不是標志和命令

· 你想使用庫

· 您想使用其他工具來幫助您編寫代碼 moc ProtoBuf

· 你想使用單元測試

2 這里有個重要的需求,就是持續集成,下面我們來說明一下什么是持續集成,

· 每次集成都通過自動化的制造(包括提交、發布、自動化測試)來驗證,準確地發現集成錯誤。

· 快速錯誤,每完成一點更新,就集成到主干,可以快速發現錯誤,定位錯誤也比較容易

· 各種不同的更新主干,如果不經常集成,會導致集成的成本變大

· 讓產品可以快速地通過,同時保持關鍵測試合格

· 自動化測試,只要有一個測試用例不通過就不能集成

· 集成并不能刪除發現的錯誤,而是讓它們很容易發現和改正

3 那又為什么是cmake?下面我們看下cmake的特性就知道為什么要選擇它了:

cmake特性

· 自動搜索可能需要的程序、庫和頭文件的能力

· 獨立的構建目錄,可以安全清理

· 創建復雜的自定義命令,例如qt moc uic

· 配置時選擇可選組件的能力

· 從簡單的文本文件(CMakeLists.txt)自動生成工作區和項目的能力

· 在靜態和共享構建之間輕松切換的能力

· 在大多數平臺上自動生成文件依賴項并支持并行構建

下面再說兩個現實場景的原因:

· 幾乎每個 IDE 都支持 CMake( CMake 支持幾乎所有IDE)

· 使用 CMake 的軟件包比任何其他構建系統都多

三、cmake編譯原理(cmake工作原理

wKgaomS1_uKAYaD7AAKvjj4XxGc165.png

上面是我畫的cmake原理流程圖,有些復雜但基本描述了cmake的工作原理,更多內容可以看下cmake的官方手冊 cmake.org.cn

四、cmake編譯(Linux Windows MacOS系統建構示例)

1 環境準備

參考我的上一篇文章

《cmake使用方法詳解 - Windows Linux MacOS cmake安裝教程

2 源碼準備

源碼準備,三個平臺使用同一份c++源碼和cmake配置

· c++源碼

//first_cmake.cpp 
#include  using namespace std; 
int main(int argc,char *argv[])
{
  cout<<"first cmake c++"<
? · CMake配置源碼 CMakeLists.txt


 · cmake_minimum_required 指定最低的cmake版本


 · project 項目名稱,后面可以通過變量獲取此名稱
# CMakeLists.txt 
cmake_minimum_required (VERSION 3.0)
project (first_cmake)
add_executable(first_cmake first_cmake.cpp)
·目錄結構

CMakeLists.txt文件在根目錄 ,c++源碼first_cmake.cpp和其同一個目錄。

wKgZomS1_0-AEUwrAACwU7kZcDI317.png

2 Windows平臺編譯

CMake=》vs項目=》cl編譯

1 源碼目錄下面創建一個編譯目錄build,用于生成cmake的臨時文件和項目文件,放在獨立的目錄方便清理和查看。

wKgaomS1_0-AUMJeAACwsk2nTTc106.png

2 進入編譯目錄build,直接運行cmake .. 使用默認生成項目文件,下圖生成的是vs2022的64位項目(文件所在的路徑和目錄層次不能太深,太深會找不到編譯器)。

wKgZomS1_0-AUV-fAAEiVMigunk865.png

wKgZomS1_0-ABnk_AAL6xZqJqjI640.png

3 編譯項目

有兩種編譯方法,第一種直接進入build目錄打開vs解決方案進行編譯.第二種,控制臺進入生成的項目文件路徑 build,然后運行 cmake --build . 后面的點表示當前路徑。

wKgaomS1_xCABf_9AACN_UFsxYs367.png

3 Linux平臺編譯

1 安裝好gcc編譯工具

sudo apt install g++

sudo apt install make

CMake=》makefile=》make使用gcc或者clang編譯

可以手動創建build路徑,然后與上面的windows編譯方法一致。

還有一種方法

1 在CMakeLists.txt文件所在路徑,運行

cmake -S . -B build

-S 后面是指定CMakeLists.txt文件的路徑,-B后面是生成的編譯臨時目錄路徑。

使用默認生成項目文件,下圖生成的是makefile + gcc (linux下 c++ 指向g++ ,cc指向gcc)

wKgZomS1_xCAErXiAAEtbE2-EEQ043.png

2 編譯項目

編譯項目也有兩種方法,

一種是直接使用生成的makefile文件

進入build目錄輸入 make 編譯項目。

另一種是與windows編譯方法一致,在項目根路徑可以輸入

cmake --build build

后面的build是cmake生成的文件所在路徑

4 Mac平臺編譯

MacOS下的編譯,基本與linux下一致,當然也可以選擇生成為xcode的工程項目:

wKgZomS1_xCAUY57AAOWFv4IGHI759.png

sudo xcode-select --switch /Applications/Xcode.app/

wKgaomS1_xCActHbAAE7I1R0qaA614.png

cmake .. -G "Xcode"

cmake --build .

wKgaomS1_xCAJxORAAM2chMwVhQ688.png

wKgaomS1_xCAbDoKAAF6NqbvwGU375.pngwKgZomS1_xCAaUn-AAItvkhGxv8288.png

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計算機
    +關注

    關注

    19

    文章

    7575

    瀏覽量

    89136
  • 軟件
    +關注

    關注

    69

    文章

    5066

    瀏覽量

    88464
  • 開源
    +關注

    關注

    3

    文章

    3472

    瀏覽量

    42947
  • 編譯
    +關注

    關注

    0

    文章

    668

    瀏覽量

    33223
  • CMake
    +關注

    關注

    0

    文章

    28

    瀏覽量

    1343

原文標題:超火的cmake是什么?

文章出處:【微信號:技術讓夢想更偉大,微信公眾號:技術讓夢想更偉大】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    跨平臺編譯工具cmake的簡單使用

    在使用不同平臺的電腦時,使用的編譯也會不一樣,如果想把一個項目在不同平臺下編譯,那有什么方式可以實現這樣的需求呢,這就是這篇文章就來介紹其中的一種方式,就是使用cmakecmake
    發表于 08-14 10:40 ?1449次閱讀
    跨平臺<b class='flag-5'>編譯</b>工具<b class='flag-5'>cmake</b>的簡單使用

    Windows下編譯工具CMake的安裝和最簡使用

    (Autosar工程已經很復雜,一般使用CMake來構建工程)。本文將介紹Windows下編譯工具CMake的安裝和最簡使用。
    的頭像 發表于 11-14 10:18 ?9388次閱讀
    Windows下<b class='flag-5'>編譯</b>工具<b class='flag-5'>CMake</b>的安裝和最簡使用

    Linux下如何使用CMake編譯程序

    今天分享一篇關于 cmake 的相關文章,通過這個工具可以生成本地的Makefile。讓我們不用去編寫復雜的Makefile。
    的頭像 發表于 11-21 09:28 ?2143次閱讀
    Linux下如何使用<b class='flag-5'>CMake</b><b class='flag-5'>編譯</b>程序

    交叉平臺開源編譯系統_cmake入門

    交叉平臺開源編譯系統_cmake入門
    發表于 01-22 13:59 ?9次下載

    CMake安裝編譯工具應用程序免費下載

    CMake是一個跨平臺的安裝(編譯)工具,可以用簡單的語句來描述所有平臺的安裝(編譯過程)。他能夠輸出各種各樣的makefile或者project文件,能測試
    發表于 08-07 08:00 ?2次下載
    <b class='flag-5'>CMake</b>安裝<b class='flag-5'>編譯</b>工具應用程序免費下載

    Cmake學習的總結(二)

    大家好,上次給大家分享了第一篇 cmake 文章:cmake學習總結(一),今天繼續給大家分享cmake。那么廢話就不多說,開始內容分享。
    的頭像 發表于 12-24 17:54 ?725次閱讀

    cmake管理配置ROOT項目的方法

    配置文件組成。 ? 序號 文件名 文件說明 1 CMakeLists.txt? Cmake配置文件,用于組織項目的編譯需要的庫、編譯過程編譯
    的頭像 發表于 01-18 17:45 ?4766次閱讀
    <b class='flag-5'>cmake</b>管理配置ROOT項目的方法

    如何使用CMake工具套件構建CUDA應用程序

    我希望這篇文章向您展示了 CMake 如何自然地支持構建 CUDA 應用程序。如果您是 CMake 的現有用戶,請試用 CMake 3 . 9 并利用改進的 CUDA 支持。如果您不是 CMa
    的頭像 發表于 04-01 17:42 ?4729次閱讀
    如何使用<b class='flag-5'>CMake</b>工具套件構建CUDA應用程序

    RT-Thread V4.1.0新特性CMake介紹與構建CMake工程

    ? ? CMake 支持 在 RT-Thread 4.1.0 正式發布版中,添加了對 CMake 的支持。開發者可以使用 SCons 工具來生成 CMakeLists.txt 文件。 為何要支持
    的頭像 發表于 05-24 19:20 ?3164次閱讀

    RT-Thread 4.1.0的CMake構建教程

    CMake 支持 在 RT-Thread 4.1.0 正式發布版中,添加了對 CMake 的支持。開發者可以使用 SCons 工具來生成 CMakeLists.txt 文件。 為何要支持 CMake
    的頭像 發表于 05-25 11:06 ?3529次閱讀

    CMake用法詳解

    CMake用法詳解
    發表于 10-25 16:28 ?2次下載

    CMake的實戰教程-1

    CMake 是一個跨平臺的構建系統生成工具。它使用平臺無關的 CMake 清單文件CMakeLists.txt,指定工程的構建過程;源碼樹的每個路徑下都有這個文件。CMake 產生一個
    的頭像 發表于 02-14 10:42 ?787次閱讀
    <b class='flag-5'>CMake</b>的實戰教程-1

    跨平臺編譯工具CMake語法詳解

    cmake 是一個跨平臺、開源的構建系統。它是一個集軟件構建、測試、打包于一身的軟件。
    的頭像 發表于 03-08 15:54 ?1569次閱讀

    在Linux下如何使用CMake編譯程序

    CMake是開源、跨平臺的構建工具,可以讓我們通過編寫簡單的配置文件去生成本地的Makefile,這個配置文件是獨立于運行平臺和編譯器的,這樣就不用親自去編寫Makefile了,而且配置文件可以直接
    的頭像 發表于 11-08 16:15 ?7138次閱讀
    在Linux下如何使用<b class='flag-5'>CMake</b><b class='flag-5'>編譯</b>程序

    CMake構建后的項目結構解析

    地。下面我們將詳細解析這個目錄的結構。 首先,我們來看一下build目錄的一級子目錄: CMakeFiles:這個目錄中存放的是CMake在構建過程中生成的臨時文件,包括編譯器檢查的結果、Find模塊
    的頭像 發表于 11-10 10:27 ?2361次閱讀
    <b class='flag-5'>CMake</b>構建后的項目結構解析
    主站蜘蛛池模板: 办公室韩国电影免费完整版 | 国产产一区二区三区久久毛片国语 | 国产中文欧美日韩在线 | 久久99精品涩AV毛片观看 | 国产在线精品视频免费观看 | 亚洲国产精品一区二区三区在线观看 | 旧里番ovaの催○セイ活指导 | 7756短视频 | 色爱区综合小说 | 欧亚一卡二卡日本一卡二卡 | 2020年国产精品午夜福利在线观看 | 久久综久久美利坚合众国 | 印度人XXx| A级毛片高清免费网站不卡 a级毛片高清免费视频 | 入禽太深在线观看免费高清 | 久久中文电影 | 嫩草伊人久久精品少妇AV网站 | 视频专区亚洲欧美日韩 | 亚洲精品视频在线观看免费 | 怡春院院日本一区二区久久 | 日本高清片免费观看 | 小小水蜜桃3视频在线观看 小向美奈子厨房magnet | xiao77唯美清纯 | 日韩精品无码免费专区 | 女人高潮了拔出来了她什么感觉 | 69久久国产露脸精品国产 | 欧美日韩永久久一区二区三区 | 水蜜桃亚洲一二三四在线 | 手机在线看片欧美亚洲 | 国产AV无码成人黄网站免费 | 中文字幕亚洲欧美日韩2019 | 免费毛片网站在线观看 | 色多多污污在线播放免费 | 97人视频国产在线观看 | 美女的隐私蜜桃传媒免费看 | 亚洲不卡视频在线观看 | 和姐姐做插得很深 | 打扑克床上视频不用下载免费观看 | 国产精品成人免费视频99 | 污到湿的爽文免费阅读 | 久久艹伊人 |