我将制作一个 cmake 脚本来帮助我跨平台构建我的游戏。
我的游戏代码文件夹的组织方式是我有 Game 目录,然后是包含 .hpp 和 .cpp 文件的各种文件夹。
例子: ./Game/Engine/GraphicsContext.hpp
./Game/Resource/Sprite.hpp 等等……
现在事情变得棘手了。现在一切都在 Visual Studio 解决方案中。
该解决方案有 2 个项目;游戏和服务器。
这两个项目的所有代码都位于 ./Game 中。
但是,它们共享类。他们都使用例如: /游戏/网络/NetEventDecoder.hpp 等等……
我的目标是这样做,如果我添加更多类,我不必更新我的 CMakeLists。
有没有人对我如何实现这一点有任何建议,或者尽量减少我需要做的添加文件的数量;
例如,代替: 包括“游戏/UI/Button.hpp”...等 最好只是:ADD_SUBDIRECTORY“游戏/用户界面”。 问题是,例如,如果我将整个 Game/Net 子目录添加到服务器项目,它将包含服务器未使用的类。
有没有人对这类问题有聪明的解决方案,或者是在我添加新类时更新 CMakeLists 的常用解决方案?
谢谢
最佳答案
只需使用一些库共享常用资源,例如:
# Game/CMakeLists.txt
add_library(game_common "${GAME_COMMON_SOURCES}")
add_executable(game "${GAME_SOURCES}")
target_link_libraries(game game_common)
# Server/CMakeLists.txt
add_executable(server "${SERVER_SOURCES}")
target_link_libraries(server game_common)
关于c++ - CMAKE/代码组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25694998/