CMake的入門教學


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的基本指令就收集在這裡

用git下載專案


這裡只針對完全沒碰過git的人,簡單說明如何用git下載專案。

在下載安裝完git之後,找個你要擺放專案的資料夾,按滑鼠右鍵,選Git Bash開啟一個命令視窗,這命令視窗的指令跟Linux下的基本指令是一樣的。


輸入下面指令來下載專案
git clone [專案位址]

以我的專案為例
git clone http://github.com/ToyAuthor/ToyBox.git


此後你可以進去專案資料夾,用下面指令檢查作者有沒有更新
git remote show origin

顯示<up to date>就是沒有更新,你手上的版本已經是最新的了,若有更新就用下面指令取得最新版本
git pull


Unlicense也是一種協議?


http://unlicense.org/
原本以為"不保留著作權"這件事並沒有人特地設計一份協議來表達的,還以為Open source最慷慨的協議是MIT跟BSD這一類的,最近才知道還有特定用來捨棄著作權的聲明。

Unlicense如字面所言,它並不算是License,而是一份宣稱捨棄著作權的放棄聲明,放棄之後就屬於Public domain了,跟創用CC授權中的「CC0」是一樣的意思,一樣將著作完全放入公共領域,任何人都可以擁有但不能獨佔。

過去的授權主流是GPL,現在的話我不曉得,至少MIT已經是Github最多人採用的協議了,很多過去閉源的著名專案也開放了,更多的自由、更少的限制是種趨勢了。

Ogre3D就有提到人們要回饋分享程式碼完全是出於自願的,用License來強制規範是沒有用的。(現在Ogre3D已經改用MIT發佈了)


如果對各種協議不是很清楚它的規範的話,可以到這網站查詢,它有非常簡明的描述。

目前ToyBox就是採用Unlicense發佈到Public Domain。