我在从CMake源代码树中构建特定的Visual Studio项目时遇到了问题。假设我们有多个目标在不同的子目录中。在一个子目录中,我们启动一个新项目(和解决方案)。该项目中的项目目标应该是ALL_BUILD的一部分,但不应该包含在父级ALL_BUILD中。
简而言之:
project(Main)
add_executable(MainApplication ...)
target_link_libraries(MainApplication PRIVATE Library_A)
add_subdirectory(Library_A)
add_library(Library_A STATIC ...)
add_subdirectory(Other_Related_Stuff_Using_MainApplication)
project(OtherRelatedStuff)
add_custom_target(OtherTarget ... DEPENDS MainApplication)
现在使用Visual Studio生成器,我们得到了两个解决方案文件。这是正确的。在这两个解决方案中,我们有这三个项目(因为OtherReleatedStuff依赖于MainApplication的构建,而OtherRelatedStuff是Main-Project的一部分)。
现在:ALL_BUILD构建所有项目。
当我设置时
set_target_properties(OtherTarget PROPERTIES EXCLUDE_FROM_ALL 1 EXCLUDE_FROM_DEFAULT_BUILD 1)
在这两个解决方案中,OtherTarget都被禁用。
我想要做的是:
解决方案1:
Main.Sln
中不应该有OtherTarget。在OtherRelatedStuff.sln中可以有MainApplication,但不应该构建。甚至可能不应该有MainApplication。
解决方案2:
Main.Sln
中,OtherTarget不应该构建(从构建中排除)。在OtherRelatedStuff.sln中,OtherTarget应该构建,但依赖关系不应该或者甚至不可见。
有没有解决方案?