【问题标题】:CMake static library not found找不到 CMake 静态库
【发布时间】:2021-08-29 05:55:20
【问题描述】:

我正在尝试链接静态库 (libglfw3.a)。该库位于我的项目根目录中的“lib”文件夹中。我不断收到可以在底部找到的错误。希望可以有人帮帮我。提前致谢!

这是我的 CMakeLists.txt:

cmake_minimum_required(VERSION 3.12)
project(GLFWGLADSTUFF)
set(CMAKE_CXX_STANDARD 11)

set(SOURCES
    src/main.cpp
    src/glad.c
)

INCLUDE_DIRECTORIES(include)

add_executable(GLFWGLADSTUFF ${SOURCES})

target_include_directories(GLFWGLADSTUFF
    PUBLIC src
    PUBLIC include
)

target_link_libraries(GLFWGLADSTUFF
    lib/libglfw3.a
)

错误:

Consolidate compiler generated dependencies of target GLFWGLADSTUFF
[ 33%] Linking CXX executable GLFWGLADSTUFF
ld: library not found for -llib/libglfw3.a
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [GLFWGLADSTUFF] Error 1
make[1]: *** [CMakeFiles/GLFWGLADSTUFF.dir/all] Error 2
make: *** [all] Error 2

【问题讨论】:

标签: c++ cmake g++


【解决方案1】:
link_directories(lib)
target_link_libraries(GLFWGLADSTUFF glfw3) 

应该可以解决您的问题。 CMake 不会将您的路径识别为路径,而是将其识别为库名称。

【讨论】:

    【解决方案2】:
    target_link_libraries(GLFWGLADSTUFF
       lib/libglfw3.a
    )
    

    不会工作。你可以:

    • 指定链接器路径和要链接的名称(即其他答案)
    • 或者最好使用IMPORTED add_library。甚至有很好的cmake documentation 讨论这个话题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-14
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      相关资源
      最近更新 更多