c++ - CMAKE/代码组织

标签 c++ visual-studio cmake

我将制作一个 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/

相关文章:

python - 构建 OpenCV cmake 错误 : could NOT find PythonInterp

c++ - 使用 htons 时的旧式转换

c++ - std::async 似乎没有使用 std::launch::async 生成线程

visual-studio - 从另一个批处理文件运行一个批处理文件

visual-studio - 为什么我的 Excel 插件中出现 "Unable to find manifest signing certificate in the certificate store"?

带有 CMake 的 QT 插件

c++ - 文件输入输出乱码

c++ - 线程 'std::system_error' what() 操作不允许

c# - Crystal 报表导出为 .docx 格式

cmake - 如何将现有的源文件和头文件添加到 CLIon 项目