【问题标题】:Cannot link library with cmake and Visual Studio 2017 [duplicate]无法将库与 cmake 和 Visual Studio 2017 链接 [重复]
【发布时间】:2017-11-21 18:16:26
【问题描述】:

我无法将外部库链接到我的项目

我有以下CMakeLists 文件

add_executable(MyProg main.cpp)

LINK_DIRECTORIES(winlib)
message(STATUS "SND FILE ${libsndfile}")
# Link
target_link_libraries(
        MyProg
        libsndfile)

我已经下载了libsndfile 库,但是cmake 无法使用find_library 函数解决它。

所以我将libsndfile-1.lib复制并重命名到我的源目录

现在我的项目结构如下所示

--
----winlib
------libsndfile.lib
----main.cpp
----otherfiles

当我尝试构建项目时,出现以下错误

Error   LNK1104 cannot open file 'libsndfile.lib'   C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CMakeLists.txt   C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\LINK 1   

我的项目出了什么问题,如何链接这个库?

【问题讨论】:

  • @drescherjm ,不,我已经下载了 x64 版本的 sndfile 库
  • 你的意思是你把它命名为libsndfile-1.lib
  • @drescherjm 我将它重命名为libsndfile.lib

标签: c++ visual-studio cmake linker libsndfile


【解决方案1】:

find_library 采用 PATHS 参数,您可以使用该参数指定在何处查找库。

有一个特殊的变量CMAKE_CURRENT_SOURCE_DIR解析到当前目录,可以用来指定本地子目录winlib

示例:

add_executable(MyProg main.cpp)

find_library(
        LIB_SND_FILE 
        libsndfile
        PATHS 
            ${CMAKE_CURRENT_SOURCE_DIR}/winlib)

target_link_libraries(
        MyProg
        ${LIB_SND_FILE})

【讨论】:

    猜你喜欢
    • 2017-07-08
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 2010-12-07
    相关资源
    最近更新 更多