MarOjoHeno
Estoy aprendiendo Opengl siguiendo el tutorial en https://learnopengl.com/
y tengo problemas para configurar la dependencia con cmake(Ver Crear una ventana).
Basé mi CMakeLists.txt en el Documentación GLFW.
cmake_minimum_required(VERSION 3.14)
project(openglTuto)
include_directories(include)
add_executable(gltuto src/main.c src/glad.c)
find_package(glfw3 3.3 REQUIRED)
find_package(OpenGL REQUIRED)
target_link_libraries(gltuto glfw)
target_include_directories(gltuto PUBLIC ${OPENGL_INCLUDE_DIR})
target_link_libraries(gltuto ${OPENGL_gl_LIBRARY})
CMake tuvo éxito en la construcción de mi configuración, pero ninja no pudo compilar e imprimir un error.
[1/1] Vinculación del ejecutable C gltuto
ERROR: gltuto: && /usr/bin/cc CMakeFiles/gltuto.dir/src/main.co CMakeFiles/gltuto.dir/src/glad.co -o gltuto /usr/lib/libglfw.so.3.3 && :
/usr/bin/ld: CMakeFiles/gltuto.dir/src/glad.co: referencia indefinida al símbolo ‘dlclose@@GLIBC_2.2.5’
/usr/bin/ld: /usr/lib/libdl.so.2: error al agregar símbolos: falta DSO en la línea de comando
collect2: error: ld devolvió 1 estado de salida
ninja: compilación detenida: el subcomando falló.
El enlazador se queja de no encontrar dlclose
. Puedes añadir libdl
con CMAKE_DL_LIBS. Además, haga uso de la vinculación moderna con objetivos en vez de instrumentos de cuerda.
Cambie su CMakeLists.txt a:
cmake_minimum_required(VERSION 3.14)
project(openglTuto)
add_executable(gltuto src/main.c src/glad.c)
find_package(glfw3 3.3 REQUIRED)
find_package(OpenGL REQUIRED)
target_include_directories(gltuto PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
$<INSTALL_INTERFACE:include>)
target_link_libraries(gltuto PUBLIC glfw OpenGL::GL ${CMAKE_DL_LIBS})
Buscar Expresiones generadoras comprender BUILD_INTERFACE
y INSTALL_INTERFACE
.
-
Gracias. Como sugirió, simplemente agregar ${CMAKE_DL_LIBS} a target_link_libraries funcionó.
– Shubham Agrawal
30 de abril de 2021 a las 2:40
DSO missing from command line
es bastante obvio, necesitas agregar-ldl
. Aunque esa llamada del enlazador es realmente extraña en primer lugar, con pasar rutas absolutas a las bibliotecas.– o11c
1 de julio de 2019 a las 20:29