CMAKE/代码组织

CMAKE / Code Organization

本文关键字:代码 CMAKE      更新时间:2023-10-16

我将制作一个cmake脚本来帮助我跨平台构建游戏。

我的游戏代码文件夹的组织方式是我有game目录,然后里面有各种东西的文件夹,包括.hpp和.cpp文件。

示例:./Game/Engine/GraphicsContext.hpp

/游戏/资源/Sprite.hpp等等。

这就是事情变得棘手的地方。现在一切都在Visual Studio解决方案中。

该解决方案有2个项目;游戏和服务器。

两个项目的所有代码都位于中/游戏

然而,他们共享类。它们都使用例如:/Game/Net/NetEventDecoder.hpp等等。

我的目标是这样做,如果我添加更多的类,我就不必更新我的CMakeLists。

有人对我如何实现这一点有什么建议吗,或者尽量减少我需要添加的文件数量;

例如,而不是:包括"游戏/UI/Button.hpp"等如果只是:ADD_SUBDIRECTORY"游戏/UI",那就太好了。例如,问题是,如果我将整个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)