#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
. Есть даже хорошая документация по этой теме.