2015-04-23 5 views
0

У меня есть простая программа для прыгающего мяча, которую я написал в 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 пакетов (что у меня есть).

Что мне не хватает?

+0

Вам не нужно писать 'QtOpenGL /' в директиве '# include'. Каталог include '$ {QT_QTOPENGL_INCLUDE_DIR}' должен уже сделать это за вас. Вместо этого используйте '#include ', который будет более устойчивым к изменениям версии, где этот файл будет перемещен. – Nobody

ответ

4

Нет ли опечатки в вашем коде «QtOpenGl/QGLWidget»? QtOpenGl следует изменить на QtOpenGL. Если вы делаете это на Linux, дело имеет значение.

+0

Это было сложно. У меня изначально не было 'QtOpenGl /' в директиве '# include' (например, @Nobody сказал, что мне это не нужно), и у меня также не было установлен qt-sdk. Я добавил папку в '# include' по запросу кого-то в Интернете (не должен иметь значения, но не может повредить правильно?), А затем обнаружил, что мне не хватает qt-sdk. Эта опечатка оставила сообщение об ошибке одинаковым и скрыла тот факт, что я уже исправил исходную проблему. В любом случае, хороший улов. – user3288829

Смежные вопросы