什么是 CMake
- 有人會提出疑問,我們不是用Mingw-w64配置好gcc了嗎,不就已經實現C++代碼的正常運行了嘛?為什么還要cmake呢?其實不難發現,我們上次配置的gcc僅僅適用于運行單個源文件,但是面對大的項目,就會變得很棘手!
- 當然,你如果覺得這些配置比較復雜,你可以選擇使用Visual Studio或者是更加專業的CLion
這是一個集成塊發環境(IDE),所有的東西都不需要你手動去配置,你只需要把程序寫好,點擊三角形運行就可以了。- 缺點:
1. 但是這是過于“傻瓜式”的東西,如果想對C或者編譯 原理做 進一步的理解的話,還是希望大家 可以自己配置!
2. Visual Studio、CLion要錢 !
3. 即使說你可以破解,但是Visual Studio的占用空間比較大,一般安裝下載完需要3~4GB,會帶來一定的卡頓
3. 我們在這里做詳細的介紹,以及cmake配置的步驟詳解!
- 缺點:
- cmake VS gcc
1. 什么是gcc?
gcc是GNU Compiler Collection(就是GNU編譯器套件),也可以簡單認為是編譯器,它可以編譯很多種編程語言(括C、C++、Objective-C、Fortran、Java等等)。
2. gcc的缺陷
在上一篇博文中我們用gcc來編譯C++,我們會發現每個可執行的.exe都需要單獨配置,也就是說:當你的程序只有一個源文件時,直接就可以用gcc命令編譯它。
但是如果你的程序包含很多個源文件時,用gcc命令逐個去編譯時,你就很容易混亂而且工作量大
3. 引入make
make工具可以看成是一個智能的批處理工具,它本身并沒有編譯和鏈接的功能,而是用類似于批處理的方式——通過調用makefile文件中用戶指定的命令來進行編譯和鏈接的。
4. 什么是makefiles?
一個工程中的源文件不計其數,其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進行更復雜的功能操作,因為 makefile就像一個Shell腳本一樣,也可以執行操作系統的命令。
make需要按照makefile中的命令執行!
makefile命令中就包含了調用許多編譯器(如我們這里多用到的gcc編譯器)去編譯某個源文件的命令。
人總是“懶惰的”,makefile在一些簡單的工程完全可以人工手寫,但是當工程非常大的時候,手寫makefile也是非常麻煩的,如果換了個平臺makefile又要重新修改。因此我們引入了cmake
5. 什么是cmake呢?
CMake這個名字是cross platform make的縮寫。雖然名字中含有“make”,但是CMake和Unix上常見的“make”系統是分開的,而且更為高階。
CMake可以更加簡單的生成makefile文件給上面的make用。當然CMake還可以跨平臺生成對應平臺能用的makefile,你不用再自己去修改了。
6. CMake生成makefile的原理
cmake生成makefile的原理是根據一個叫CMakeLists.txt文件(學名:組態檔)去生成makefile。當然CMakeLists.txt就需要你自己去手寫了!
CMake安裝
CMake下載
CMake官網: https://cmake.org/download/
- 國外網站網速有點慢,可能下不下來。
- 可以使用網盤去找資源。
Cmake安裝
- 選擇好自己電腦是什么系統,以及是32位還是64位。(P.S.x86指的是32位系統;x64指的是64位系統)
1.. 選擇自己系統,這里安裝windows - 選擇安裝版本
- .msi 為安裝版本,安裝過程中自動配置; .zip 為壓縮版本,安裝過程中手動配置
- msi 與zip 的區別:1)集成方式不同。msi:是microsoft installer的簡寫,是微軟格式的安裝du包; zip:是一種數據zhi壓縮和文檔dao儲存的文件格式。zip是壓縮包,而MSI文件是Windows Installer的數據包,它實際上是一個數據庫,包含安裝一種產品所需要的信息和在很多安裝情形下安裝(和卸載)程序所需的指令和數據,只要系統中包含windows installer支持就能夠使用。
image.png
Cmake使用
如何構建一個CMake項目(譯) - 42&Curry - 博客園 https://www.cnblogs.com/42-Curry/p/9752022.html
參考文章
cmake簡明教程-半小時從入門到精通_qccz123456的博客-CSDN博客_cmake教程 https://blog.csdn.net/qccz123456/article/details/80639817
- 參考文章
vscode+cmake 環境配置 詳解云生死海的博客-CSDN博客怎樣將cmake添加到vscode的環境變量 https://blog.csdn.net/qq_44641344/article/details/105977567?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase