CMake链接库未显示在VisualStudio生成的项目中

时间:2018-12-16 02:35:07

标签: c++ cmake static-libraries

我正在使用cmake为Windows生成一个VisualStudio项目,并且提供的链接功能在生成的VisualStudio项目上似乎不起作用。

生成的项目是一个库,它依赖于另一个库作为依赖项。

该项目的生成工作正常,但是无论我如何尝试,都不会在“其他依赖项”条目下显示任何内容。

在声明“ add_library(MyLib)”之前和之后,我都尝试同时使用“ link_libraries”和“ target_link_libraries” 我尝试了例如:

project( MyLib )
...
add_library( MyLib ${source_list} )
...
target_link_libraries ( MyLib ${SOME_LIB_PATH} )
target_link_libraries ( MyLib "${SOME_LIB_PATH}" )
target_link_libraries ( MyLib W:/work/Project/MyLib/ )
target_link_libraries ( MyLib "W:/work/Project/MyLib/" )
target_link_libraries ( MyLib W:/work/Project/MyLib/MyLib.lib )
target_link_libraries ( MyLib "W:/work/Project/MyLib/MyLib.lib" )
target_link_libraries ( MyLib banane )
target_link_libraries ( MyLib whatever )
target_link_libraries ( MyLib "test" )
...
include_directories(
    "Include/"
    ${SOME_LIB_INCLUDE_PATH}
)

包含目录正确显示在项目属性中。 那是一个错误还是我错过了什么:)?

1 个答案:

答案 0 :(得分:0)

Scheff回忆起静态库与其他潜在的静态库实际上没有链接,从而为我指明了正确的方向。

即使Visual Studio允许在其UI中指定静态库依赖关系,它实际上也没有发生,并且CMake通过实际上不将其添加到生成的项目中来显示此依赖关系;那是令人困惑的部分。

只要我没有记错的话,即使最终可执行文件链接了该库及其库的依赖关系,即使它使用其中的代码,静态库也可以明确地链接到另一个静态库的依赖关系,从而进行编译。 / p>

所以,谢谢@Scheff的评论!