CMake有個很棒的概念就是「擺放程式碼的資料夾」跟「擺放生成物的資料夾」是分開來的,下面簡稱這兩個資料夾為「src dir」跟「bin dir」,專案資料夾就是「src dir」,而你需要另外準備一個空資料夾來做為「bin dir」。
「bin dir」可以開好幾個無所謂,面對各種編譯器你可以各準備一個「bin dir」來負責,靜態函式庫跟動態函式庫也可以分別用不同的「bin dir」,CMake生出來的專案檔、專案檔產生的函式庫跟執行檔都會放在「bin dir」。
打從一開始就不會去汙染「src dir」(專案資料夾),這比SCons的清理機制更讓人喜歡,CMake的清理就只需要刪除「bin dir」。
有些專案設計沒讓CMake的組態檔放在專案根目錄,改以Makefile或者python來主導一切,讓「bin dir」固定在某個資料夾位置,這會讓CMake失去上述優點,真的滿可惜的。
打開CMake之後最先需要設定的就是上述的兩個資料夾
Where is the source code:「src dir」
Where to build the binaries: 「bin dir」
完成後按「Generate」來設定要用哪個編譯環境,「Configure」按鈕是用來設置其他選項的,通常用不到,我目前會按「Configure」的情況只有在CMake找不到編譯器位置的時候。
想看簡單的CMake範例可以去看functional這個專案,只會產生一個執行檔,連函式庫都沒有產生,結構單純,我在上面有加中文註解,會很好理解。
看懂之後可以去看luapp的CMake寫法,那是比較像樣的專案結構。
最後才看ToyBox裡面所寫的,我喜歡的CMake技巧都應用在上面了。
對於CMake的基本指令就收集在這裡了