【发布时间】:2016-11-02 07:36:30
【问题描述】:
在我的项目中,我有大约 250 个项目,其中一个主要项目使用了大部分项目。当主项目运行时,所有项目都是最新的,这一点很重要。所以基本上,Visual Studio 应该在 MainProject 编译(和运行)时检查所有 250 个项目的更改。我的 CMakeLists.txt 文件如下所示。
根/CMakeLists.txt
....
add_subdirectory (MainProject)
add_subdirectory (ProjectA)
add_subdirectory (ProjectB)
add_subdirectory (ProjectC)
add_subdirectory (ProjectD)
....
Root/MainProject/CMakeLists.txt
....
add_executable (MainProject a.cpp b.cpp)
add_dependencies (MainProject ProjectA ProjectB ...)
....
Root/ProjectA/CMakeLists.txt
....
add_executable (ProjectA a.cpp b.cpp)
....
显然,这是一个非常简化的示例,但希望这个想法存在。基本上,为了让 Visual Studio 检查所有 250 个左右项目的依赖项,我必须将主项目中的所有其他项目添加为依赖项。现在这根本不是一个优雅的解决方案,因为 MainProject 中的 add_dependencies 中有很多依赖项。它有效,但是对于这个问题还有什么更优雅的吗?
【问题讨论】:
-
MainProject中是否包含其他项目库?或者您希望将所有库、可执行文件和自定义目标链接到 main? -
后者。我希望在 MainProject 运行时检查所有库、可执行文件和自定义目标(即链接到 main 作为依赖项)。
-
那么请查看我的答案以及可能的解决方案here。在您的情况下,很可能覆盖
add_executable()、add_library()和add_custom_target()就可以了。目前(根据 CMake 版本 3.5.x),据我所知,CMake 本身没有提供全局目标列表。 -
啊,真可惜,但覆盖听起来足以解决我的问题。
-
我不建议重新定义现有函数,而是定义你自己的函数,比如
my_add_library,这样很明显会发生一些神奇的事情。
标签: visual-studio cmake