Статическая библиотека CMake не найдена

#c #cmake #g

Вопрос:

я пытаюсь связать статическую библиотеку (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
 

Комментарии:

1. Я думаю, вам нужен абсолютный путь: cmake.org/cmake/help/latest/command/target_link_libraries.html

Ответ №1:

 link_directories(lib)
target_link_libraries(GLFWGLADSTUFF glfw3) 
 

это должно решить вашу проблему. CMake распознает ваш путь не как путь, а как имя библиотеки.

Ответ №2:

 target_link_libraries(GLFWGLADSTUFF
   lib/libglfw3.a
)
 

Не получится. Ты можешь:

  • укажите путь компоновщика и имя, которое будет связано (т. е. другой ответ).
  • или, что предпочтительнее, используйте an IMPORTED add_library . Есть даже хорошая документация по этой теме.