[Cocos2d-x] CMakeLists.txt 簡介
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 還沒有很熟,所以這裡的內容是參照文件後整理出來的,如有謬誤請不吝指教。以下附上參考連結: