我想用 C 制作一個游戲,我的目標是將游戲引擎代碼與游戲邏輯代碼隔離開來,這樣我就可以重用一些邏輯并擁有單獨的 git 存盤庫:
-- MyPersonalProjects
| -- TheEngine (library)
| | -- src...
| -- TheGame (depends on TheEngine)
| | -- src...
| -- AnotherGame (depends on TheEngine)
| | -- src...
我是 C 的新手(來自 Unity C#),所以構建系統仍然是我想要弄清楚的東西。
使用 CMake,我將如何將引擎鏈接到游戲?使用相對路徑?將.a檔案復制到每個引擎?或者有沒有更好的方法來解決這個問題?
IDE: Mac 版 CLion
uj5u.com熱心網友回復:
如果您只有一個引擎和一堆游戲,那么將引擎作為git 子模塊包含到每個游戲中,然后add_subdirectory從每個游戲內部呼叫引擎就足夠了。對于草圖:
cmake_minimum_required(VERSION 3.21)
project(Game)
add_subdirectory(Engine)
# ...
target_link_libraries(Game PRIVATE Engine::Engine)
這種方法的主要優點是易于使用和維護。無需撰寫安裝規則或學習包管理器。主要的缺點是您必須等待為每個游戲構建整個引擎。CCache 是一種部分緩解措施(不適用于 Windows,可能會因為愚蠢的原因而失敗)。
另一個缺點是它不能擴展。1 對 N 依賴圖很容易跟蹤。任意依賴 DAG 不是。隨著規模的擴大和構建時間的增加,與包管理器(例如 vcpkg(或 Conan))集成的價值會顯著增加。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/314060.html
