Link CMake 的第一方库
Link 1st-party library with CMake
我想用 C++ 制作游戏,我的目标是将游戏引擎代码与游戏逻辑代码隔离开来,这样我就可以重用一些逻辑并拥有单独的 git 存储库:
+-- MyPersonalProjects
| +-- TheEngine (library)
| | +-- src...
| +-- TheGame (depends on TheEngine)
| | +-- src...
| +-- AnotherGame (depends on TheEngine)
| | +-- src...
我是 C++ 的新手(来自 Unity C#),所以构建系统仍然是我想要弄清楚的东西。
使用 CMake,我将如何将引擎链接到游戏?使用相对路径?将 .a
文件复制到每个引擎?或者有更好的方法来解决这个问题吗?
IDE: CLion for Mac
如果您只有一个引擎和一堆游戏,那么将引擎作为 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)等包管理器集成的价值支柱会显着增加 .
我想用 C++ 制作游戏,我的目标是将游戏引擎代码与游戏逻辑代码隔离开来,这样我就可以重用一些逻辑并拥有单独的 git 存储库:
+-- MyPersonalProjects
| +-- TheEngine (library)
| | +-- src...
| +-- TheGame (depends on TheEngine)
| | +-- src...
| +-- AnotherGame (depends on TheEngine)
| | +-- src...
我是 C++ 的新手(来自 Unity C#),所以构建系统仍然是我想要弄清楚的东西。
使用 CMake,我将如何将引擎链接到游戏?使用相对路径?将 .a
文件复制到每个引擎?或者有更好的方法来解决这个问题吗?
IDE: CLion for Mac
如果您只有一个引擎和一堆游戏,那么将引擎作为 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)等包管理器集成的价值支柱会显着增加 .