[Cocos2d-x] CMakeLists.txt 簡介

Hannah Lo
Akatsuki Taiwan Technology
3 min readOct 4, 2019

Cocos2d-x 是個基於 C++ 的跨平台遊戲引擎,因此需要能夠支援多平台的編譯環境。過去不同平台使用了不同的專案設定方式,比如 iOS 使用 Xcode、Android 使用 Makefile 以及 Windows 使用了 Visual Studio。這個些不同造成了開發上的不便,當需要升級引擎版本時也會因此造成一些困擾。

因此 Cocos2d-x 在 3.17 版本之後將所有的專案編譯設定轉移到 CMake 統一管理。優點是開發人員可以減少處理多平台專案的時間,多人協作的環境下也能減少專案衝突問題的發生。當然,缺點就是我們又要多學如何使用一套新的工具。而且雖然 CMake 可以幫忙產生多平台的專案,但撰寫過程中若需要處理各平台的特殊設定,這時就需要對其有一些基本的了解,不然在過程中還是會讓人覺得不開心的。

下面就請大家一起看看 3.17.1 版的 CMakeLists.txt 做了什麼事吧!

cmake_minimum_required(VERSION 3.6)

指定運行這個檔案所需要的 CMake 最低版本,這裡指定了 3.6。大家可以使用cmake — version來確認電腦上的版本。

project(Cocos2d-x)

設定專案的名稱為 Cocos2d-x,並且將專案名稱儲存在 PROJECT_NAME,因為是在最外層的 CMakeLists.txt 調用這個方法,所以還會將專案名稱儲存在 CMAKE_PROJECT_NAME 變數中。
project 方法還有一些選擇性的設定可以使用( 如專案版號),詳細的部分就再參閱文件吧!

set(COCOS2DX_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})

set 用來設定暫存變數與環境變數,這裡把 CMAKE_CURRENT_SOURCE_DIR 的數值設定到暫存變數 COCOS2DX_ROOT_PATH 中。變數的作用域分為 function、directory 和 cache。Function 內所定義的變數只在本體區與呼叫的子 function 中作用。每個 directory 代表著每個獨立的 CMakeLists 檔案,每個檔案在運行時會複製上層檔案存在的變數,並初始化獨立的變數。Cache 則是在 CMake 存儲了一組單獨的變數組,其值在項目構建樹內的多個運行中保持不變。

include(PreventInSourceBuilds)

載入並運行 cocos2d/cmake/Modules/PreventInSourceBuilds.cmake,檔案裡面定義了 AssureOutOfSourceBuilds 方法,來避免跑 test 時重複編譯程式。

add_subdirectory(${COCOS2DX_ROOT_PATH}/cocos ${ENGINE_BINARY_PATH}/cocos/core)

第一個參數指定要引入的 CMakeList 和程式碼所在路徑,可以是絕對路徑或相對路徑。如果是相對路徑的話,是以目前所在的資料夾為基準。第二個參數則是指定運行結果的存放目錄,也是能夠選擇使用絕對或相對路徑。這裡的相對路徑則是以目前指定的輸出路徑為基準。

這裡引入了 cocos2d/cocos/CMakeLists.txt 並且將運行後所輸出的檔案存放在 ${ENGINE_BINARY_PATH}/cocos/core

以上就是本篇的內容啦!因為對 CMake 還沒有很熟,所以這裡的內容是參照文件後整理出來的,如有謬誤請不吝指教。以下附上參考連結:

--

--