【发布时间】:2015-04-23 01:48:48
【问题描述】:
几年前我在 Windows 上的 QtCreator 中编写了一个简单的弹跳球程序,现在我尝试使用 CMakeLists 而不是 Qt 项目文件在 Linux (Ubuntu 14.04) 上重建它。我的 CMakeLists.txt 文件(大致基于this question 中的 cmake 文件如下。
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 包(我这样做有)。
我错过了什么?
【问题讨论】:
-
你不需要在
#include指令中写QtOpenGL/。包含目录${QT_QTOPENGL_INCLUDE_DIR}应该已经为您完成了这项工作。请改用#include <QGLWidget>,这将对移动此文件的版本更改更具弹性。