我将制作一个cmake脚本来帮助我跨平台构建我的游戏。
我的游戏代码文件夹的组织方式是我有游戏目录,然后有各种文件夹,包括.hpp和.cpp文件。
实施例: ./Game/Engine/GraphicsContext.hpp
./游戏/资源/ Sprite.hpp 等...
现在这里的事情变得棘手了。现在的一切都在Visual Studio解决方案中。
该解决方案有2个项目;游戏和服务器。
这两个项目的所有代码都位于./Game。
然而,他们分享课程。他们都使用例如: /Game/Net/NetEventDecoder.hpp 等...
我的目标是这样做,如果我添加更多课程,我不必更新我的CMakeLists。
有没有人对如何实现这一点有任何建议,或者最大限度地减少我需要添加的文件数量;
例如,而不是: 包括"游戏/ UI / Button.hpp" ......等 这将是很好的:ADD_SUBDIRECTORY" Game / UI"。 问题是,例如,如果我将整个Game / Net子目录添加到服务器项目中,它将包括服务器未使用的类。
有没有人有这种问题的聪明解决方案,或者是我添加新课程时更新CMakeLists的常用解决方案?
谢谢
答案 0 :(得分:2)
只需使用某些库共享常见资源,例如:
# 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)