当我使用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>
通过项目设置。
答案 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")