cmake 如何在 Visual Studio 中激活 "Inherit from parent" link 选项

How can cmake activate "Inherit from parent" link option in Visual Studio

我正在使用 cmake 生成多平台 C++ 项目的 Windows/VisualStudio 解决方案。

在 VS 中,当我单击项目的 Properties -> Linker -> Input -> Additional Dependencies -> Edit 时,会出现一个包含我用 cmake 添加的依赖项的列表, 那也行。但是还有一个复选框“从项目默认值的父级继承”。当 cmake 生成解决方案时,此复选框已关闭,但我需要检查它才能 link.

有没有办法让 cmake 生成一个选中此复选框的 VS 项目?

编辑:项目是用 clang++ 编译的。

选中此框会将 %(AdditionalDependencies) 附加到附加依赖项列表中。您可以设置目标的 LINK_LIBRARIES 属性 以添加此 'manually':

set_target_properties(<target> PROPERTIES LINK_LIBRARIES "%(AdditionalDependencies)")

您可能需要在 LINK_LIBRARIES 属性 中获取它并附加它,具体取决于您构建依赖项列表的方式。请注意,尝试使用普通命令 target_link_libraries 不起作用,因为 CMake 不确定如何处理请求,因为它以 % 开头。此外,当出现在 IDE 中时,它实际上会添加 %(AdditionalDependencies).lib,但它仍然按预期工作。

我试过其他方法,对我来说效果很好。

在我的顶部“.cmake”文件中,我设置了各种选项,例如调用 add_compile_options(...) 或设置 CMAKE_CXX_STANDARD_LIBRARIES。我在此文件的末尾添加了以下行:

set(CMAKE_CXX_STANDARD_LIBRARIES "$(CMAKE_CXX_STANDARD_LIBRARIES) %(AdditionalDependencies) ")

它在 <AdditionalIncludeDirectories> 数据的末尾附加了“;%(AdditionalDependencies)”,没有阻止 [=23] 的“.a”或“.lib”后缀=] 在我的案例中完成。