在使用CMake之后,我尝试使用make编译一个简单的Qt程序,并且不断出现此错误:
/usr/bin/ld: warning: libGL.so.1, needed by /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1, not found (try using -rpath or -rpath-link)
/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1: undefined reference to `glGetTexParameterfv'
/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1: undefined reference to `glHint'
/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1: undefined reference to `glClearColor'
/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1: undefined reference to `glFlush'
...
collect2: error: ld returned 1 exit status
我已经通过libgl1-mesa-dev
重新安装了sudo apt install --reinstall libgl1-mesa-dev
,确保在libGL.so.1
目录中安装了/usr/lib/x86_64-linux-gnu/mesa
,并且没有运行sudo ldconfig
我不确定是什么原因造成的,并且在其他任何地方都没有看到这个问题。这似乎是我所忽略的依赖关系,但是我使用sudo apt install qt5-default
安装了Qt,所以我认为可以处理依赖关系。
这是我的CMakeLists.txt:
cmake_minimum_required(VERSION 2.6)
project(SimpleQt)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_AUTOMOC ON)
find_package(Qt5Widgets CONFIG REQUIRED)
include_directories(include)
add_executable(SimpleQt src/main.cpp)
target_link_libraries(growth Qt5::Widgets)
答案 0 :(得分:0)
感谢Ripi2在评论中,我找到了一种使它起作用的方法。显然我必须将OpenGL与我的项目链接。这是我更新的CMakeLists.txt:
cmake_minimum_required(VERSION 2.6)
project(SimpleQt)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_AUTOMOC ON)
find_package(OpenGL Required) # Added this line
find_package(Qt5Widgets CONFIG REQUIRED)
include_directories(include ${OPENGL_INCLUDE_DIRS}) # Updated this line
add_executable(SimpleQt src/main.cpp)
target_link_libraries(growth Qt5::Widgets ${OPENGL_LIBRARIES}) # Updated this line
不过,我没有回答,因为这绝对不是应该的。 Qt网站上的所有示例均未将OpenGL显示为链接要求,因此我认为必须有更好的方法。