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

时间:2017-02-06 12:20:27

标签: visual-studio visual-studio-2015 cmake

当我使用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>

通过项目设置。

1 个答案:

答案 0 :(得分:2)

似乎是“链接库依赖关系”&#39;和&#39;使用库依赖项输入&#39;不再需要标记来链接所有lib符号。

在Visual Studio 2015中,您无法在目标上使用/WHOLEARCHIVE链接器标志。我编辑了我对相关问题的回答,以提供更多详细信息:

https://stackoverflow.com/a/23799529/1151329

该标志的作用类似于GCC -whole-archive链接器标志。

在我的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")