【发布时间】:2016-02-04 23:42:47
【问题描述】:
我在从 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 应该构建,但依赖项不可见,甚至不应该可见。
有解决办法吗?
【问题讨论】:
标签: c++ visual-studio visual-studio-2012 cmake