【发布时间】:2017-02-06 12:20:27
【问题描述】:
当我使用 cmake 生成 Visual Studio 目标时,生成的项目文件在平台属性部分包含以下内容:
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
...
<ProjectReference>
<LinkLibraryDependencies>false</LinkLibraryDependencies>
</ProjectReference>
...
</ItemDefinitionGroup>
我想将 CMakeLists 文件中的属性设置为 true。我该怎么做?
我的项目依赖是使用TARGET_LINK_LIBRARIES设置的,但在Linux上我也可以使用,例如:
TARGET_LINK_LIBRARIES(${targetname} "-Wl,--whole-archive" *some libs* "-Wl,--no-whole-archive")
这会强制所有符号链接到目标。
使用 Visual Studio 链接所有符号的方法是指定:
<LinkLibraryDependencies>true</LinkLibraryDependencies>
通过项目设置。
【问题讨论】:
-
这闻起来很像XY problem。您想通过将此属性设置为 true 来实现什么?在 CMake 中,您应该使用 CMake (
target_link_libraries()) 来表达链接依赖关系,而不是使用不适用于其他生成器(Makefile 等)的特定于生成器的东西 -
不是用来设置依赖的。我确实为此使用了 target_link_libraries() 。我将编辑我的问题并添加更多详细信息。
-
你不能。请参阅 here:“事实上,我们故意将 LinkLibraryDependencies 设置为 false,以便
add_dependencies不会导致链接。” -
您确定
LinkLibraryDependencies会导致所有符号链接吗?我 99% 确定情况并非如此。 -
在这里查看我的 SO 答案之一:stackoverflow.com/a/23799529/1151329
标签: visual-studio visual-studio-2015 cmake