我正在学习https://learnopengl.com/的教程,我在使用cmake(请参见创建窗口)设置依赖关系时遇到了困难。
我的CMakeLists.txt是基于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成功地构建了我的配置,但是忍者无法编译和打印错误。
1/1链接C可执行的gltuto 失败: gltuto:&& /usr/bin/cc CMakeFiles/gltuto.dir/src/main.c.o CMakeFiles/gltuto.dir/src/glad.c.o -o gltuto /usr/lib/libglfw.so.3.3 &: /usr/bin/ld: CMakeFiles/gltuto.dir/src/glad.c.o:对符号'dlclose@@GLIBC_2.2.5‘的未定义引用 /usr/bin/ld: /usr/lib/libdl.so.2:错误添加符号:命令行缺少DSO collect2:错误: ld返回1退出状态 忍者:构建停止:子命令失败。
发布于 2019-07-01 20:30:49
链接者抱怨没有找到dlclose。您可以使用libdl添加利布斯。另外,利用与的现代链接,而不是字符串。
将CMakeLists.txt更改为:
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})查找生成器表达式以了解BUILD_INTERFACE和INSTALL_INTERFACE。
https://stackoverflow.com/questions/56841870
复制相似问题