У меня есть простая программа для прыгающего мяча, которую я написал в QtCreator на Windows пару лет назад, и теперь я пытаюсь перестроить ее на Linux (Ubuntu 14.04), используя CMakeLists вместо файлов проекта Qt. Мой файл CMakeLists.txt (по мотивам от файла CMake в this question нижеCmake не может найти QGLWidget
cmake_minimum_required (VERSION 2.6)
project (BouncyBall)
find_package (Qt4 COMPONENTS QtGui QtOpenGL REQUIRED)
set (QT_USE_QTOPENGL TRUE)
include(${QT_USE_FILE})
add_definitions(${QT_DEFINITIONS})
include_directories(${QT_QTOPENGL_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR})
find_package (Bullet REQUIRED)
add_executable (BouncyBall main.cpp BouncyBall.cpp BulletWidget.cpp)
target_link_libraries(BouncyBall ${QT_LIBRARIES} ${BULLET_LIBRARIES})
Cmake настраивает и создает файлы сборки без каких-либо ошибок, но не может скомпилировать со следующей ошибкой:.
[ 33%] Building CXX object CMakeFiles/BouncyBall.dir/main.cpp.o
/usr/bin/c++ -DQT_GUI_LIB -DQT_NO_DEBUG -DQT_OPENGL_LIB -isystem /usr/include/qt4 -isystem /usr/include/qt4/QtOpenGL -isystem /usr/include/qt4/QtGui -I/home/user/Programs/BuildArea/Games/BouncyBall -o CMakeFiles/BouncyBall.dir/main.cpp.o -c /home/user/Programs/Games/BouncyBall/main.cpp
In file included from /home/user/Programs/Games/BouncyBall/main.cpp:2:0:
/home/user/Programs/Games/BouncyBall/BulletWidget.h:4:30: fatal error: QtOpenGl/QGLWidget: No such file or directory
#include <QtOpenGl/QGLWidget>
Я проверял, что файл действительно находится в/usr/include/qt4/QtOpenGL. Я смотрел онлайн, но все найденные решения относятся к добавлению QT += opengl
к файлу проекта (но я использую CMake) или не иметь установленных dev-tools или qt-sdk пакетов (что у меня есть).
Что мне не хватает?
Вам не нужно писать 'QtOpenGL /' в директиве '# include'. Каталог include '$ {QT_QTOPENGL_INCLUDE_DIR}' должен уже сделать это за вас. Вместо этого используйте '#include', который будет более устойчивым к изменениям версии, где этот файл будет перемещен. –
Nobody