Visual studio 如何通过CMAKE将Visual Studio LinkLibraryDependencies属性设置为yes

Visual studio 如何通过CMAKE将Visual Studio LinkLibraryDependencies属性设置为yes,visual-studio,visual-studio-2015,cmake,Visual Studio,Visual Studio 2015,Cmake,使用cmake生成Visual Studio目标时,生成的项目文件在平台属性部分包含以下内容: <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> ... <ProjectReference> <LinkLibraryDependencies>false</LinkLibraryDependencies> &l

使用cmake生成Visual Studio目标时,生成的项目文件在平台属性部分包含以下内容:

<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    ...
    <ProjectReference>
      <LinkLibraryDependencies>false</LinkLibraryDependencies>
    </ProjectReference>
    ...
</ItemDefinitionGroup>
这将强制所有符号链接到目标

使用visual studio链接所有符号的方法是指定:

<LinkLibraryDependencies>true</LinkLibraryDependencies>
true

通过项目设置。

链接所有库符号似乎不再需要“链接库依赖项”和“使用库依赖项输入”标志

在Visual Studio 2015中,您不能在目标上使用
/wholerchive
链接器标志。我编辑了我对一个相关问题的回答,以提供更多细节:

该标志与GCC
-wholearchive
链接器标志类似

在我的CMAKE文件中,我添加了以下内容:

SET_TARGET_PROPERTIES(${targetname} PROPERTIES LINK_FLAGS_DEBUG "/WHOLEARCHIVE:debug_lib_name")
SET_TARGET_PROPERTIES(${targetname} PROPERTIES LINK_FLAGS_RELEASE "/WHOLEARCHIVE:release_lib_name")

这东西闻起来有强烈的气味。通过将此属性设置为true,您希望实现什么?在CMake中,您应该使用CMake(
target\u link\u libraries()
)来表示链接依赖关系,而不是使用特定于生成器的东西来表示链接依赖关系,这些东西无法与其他生成器(Makefiles等)一起使用。它不用于设置依赖关系。为此,我确实使用了target_link_libraries()。我将编辑我的问题并添加更多细节。你不能。请参阅:“事实上,我们故意将LinkLibraryDependencies设置为false,以便
add\u dependencies
不会导致链接。”您确定
LinkLibraryDependencies
会导致链接所有符号吗?我99%确定情况并非如此。请参见我的答案之一:
SET_TARGET_PROPERTIES(${targetname} PROPERTIES LINK_FLAGS_DEBUG "/WHOLEARCHIVE:debug_lib_name")
SET_TARGET_PROPERTIES(${targetname} PROPERTIES LINK_FLAGS_RELEASE "/WHOLEARCHIVE:release_lib_name")