CMake構建學習筆記1-概述

charlee44發表於2024-08-23

CMake可以說已經是C/C++構建的事實標準了,目前絕大多數的C/C++專案都已經採用CMake進行構建,好處至少有兩點:一個是跨平臺,另一個是方便依賴庫引入。不過筆者認為,像CMake這種工具其實也沒必要特意學習,說到底它也不過是方便程式設計師使用的工具,沒有它程式設計師也能進行C/C++程式的構建,只不過會麻煩一點。像這樣的工具的學習,應該是遇到了已經存在的問題,再帶著問題去學習它,方才有效果。否則的話,連使用這個工具的目的都不明白,又怎麼學的進去呢?

簡單來說,CMake是用來構建C/C++程式的。筆者在對CMake有一定了解之前,經常將構建程式說成是編譯程式,這樣其實是不太準確的。其實要生產一個大型的程式,通常包含非常多的構建過程:預處理、編譯、彙編、連結、測試、安裝以及清理等。不止是C/C++程式,基本上所有程式語言的程式都會將程式碼檔案組織成工程,來管理這個程式碼專案的構建過程,只不過它們各自的步驟略有不同。理解了這一點,就能很快上手其他程式語言的構建過程,這也是軟體工程中對程式碼進行組織管理的關鍵部分。

很多人說,CMake的語法太醜陋了,用起來一點都不簡潔優雅。其實真要這麼說,那JavaScript的語法才是宇宙第一的爛,還不是成為了目前Web前端的唯一程式語言。其實一門程式語言設計好不好只是一方面,只要確實解決了行業的痛點問題,用的人就會多,就會有越來越多的人給其打補丁,就會越來越流行。CMake也是如此,之所以會越來越多的人用,就是因為其確實解決了C/C++程式跨平臺編譯的行業痛點。十幾年前,其實只有一少部分專案使用CMake,但CMake一直堅持更新改進,到今天甚至很多IDE都支援直接匯入CMake工程了。

回到CMake學習的問題,之所以覺得比較困難,其中一個原因就是CMake包含了幾乎所有C/C++程式構建的內容,這對於一個初學者來說是很難上手了。最適合初學者上手的是什麼呢?像Visual Studio 建立的工程那樣,下一步下一步,有啥特殊的就右鍵屬性設定一下,所謂的構建過程就是按一下F5就行了。但是要學習CMake肯定不是這樣,不說要細緻地掌握這個構建工具鏈,至少要知道軟體構建的大概步驟和流程。要了解這一點,不妨從編譯C/C++程式的依賴庫開始。

作為本篇的結果,說一下CMake的安裝。CMake的安裝沒有什麼特別的,直接在官網上下載然後下一步下一步安裝即可,不過有兩點需要注意:第一個是要確保正確新增了環境變數,保證CMake指令能被系統識別到;第二個版本用新不用舊,因為版本越新支援查詢的依賴庫越多。

相關文章