【问题标题】:C++ / compilation of a program fatal error: QtGui/qwidget.h: No such file or directoryC++/编译程序致命错误:QtGui/qwidget.h: No such file or directory
【发布时间】:2015-06-11 02:47:03
【问题描述】:

我下载了一个需要 qt4 的 linux 应用程序。 我的电脑上已经有它了。

当我想在终端中使用 ma​​ke 编译程序时出现以下错误。

[  6%] Building CXX object CMakeFiles/util_convert.dir/moc_planeviewer.cxx.o
In file included from /usr/include/qt4/QtGui/QMainWindow:1:0,
             from /home/Desktop/plane/src/planeviewer.h:3,
             from /home/Desktop/plane/src/moc_planeviewer.cxx:9:
/usr/include/qt4/QtGui/qmainwindow.h:45:27: fatal error: QtGui/qwidget.h: No such file or directory
 #include <QtGui/qwidget.h>
                           ^
compilation terminated.
make[2]: *** [CMakeFiles/util_convert.dir/moc_planviewer.cxx.o] Error 1
make[1]: *** [CMakeFiles/util_convert.dir/all] Error 2
make: *** [all] Error 2

我不明白,因为我已经检查了所有内容。 对于这些不同的命令行,我有以下输入:

qmake --version

QMake version 2.01a
Using Qt version 4.8.6 in /usr/lib/x86_64-linux-gnu

找到 qwidget.h

/opt/qt/5.4/android_armv7/include/QtWidgets/qwidget.h
/opt/qt/5.4/gcc_64/include/QtWidgets/qwidget.h
/usr/include/qt4/Qt/qwidget.h
/usr/include/qt4/QtGui/qwidget.h

所以文件已经存在了。

CmakeList 以防万一

find_package(Boost 1.58 REQUIRED COMPONENTS serialization program_options python)
find_package(PythonLibs 2.6 REQUIRED)

set(QT_USE_QTSVG TRUE)
set(QT_USE_QTXML TRUE)
set(QT_USE_QTOPENGL TRUE)
find_package(OpenGL)
find_package( Qt4 REQUIRED )

INCLUDE_DIRECTORIES("${Boost_INCLUDE_DIRS}")
INCLUDE_DIRECTORIES("${PYTHON_INCLUDE_PATH}")
INCLUDE_DIRECTORIES(${QT_QTCORE_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR} ${QT_QTSVG_INCLUDE_DIR}
                    ${QT_QTXML_INCLUDE_DIR} ${QT_QTOPENGL_INCLUDE_DIR} ${OPENGL_INCLUDE_DIRS})

QT4_WRAP_UI(util_convert_FORMS planeviewer.ui)
QT4_WRAP_CPP(util_convert_MOCS planeviewer.h planewidget.h)
ADD_EXECUTABLE(util_convert ${util_convert_FORMS} ${util_convert_MOCS} plane.cpp util_convert.cpp planeviewer.cpp planewidget.cpp objects.cpp coordinates.cpp utils.cpp)
TARGET_LINK_LIBRARIES(util_convert ${Boost_LIBRARIES} ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTSVG_LIBRARY}
                                  ${QT_QTXML_LIBRARY} ${QT_QTOPENGL_LIBRARY} ${OPENGL_LIBRARIES})

我如何编译

转到 src/,然后执行 cmake .,最后执行 ma​​ke。 错误发生在 make 步骤。

在发布之前,我已经在互联网上搜索过,但还没有找到解决方案。

有人可以帮助我吗?

【问题讨论】:

  • 请添加编译器的确切调用,可能有些参数是错误的。
  • 我已经编辑了我的帖子。我只是做了 cmake,然后在终端中制作。
  • 是的,但是在第一个sn-p中,你能添加触发那个错误的编译器命令行吗?
  • 好吧,我加了。谢谢
  • 我认为您需要将路径 /usr/include/qt4/ 添加到 INCLUDE_DIRECTORIES

标签: c++ qt compilation qmake


【解决方案1】:

问题出在INCLUDE_DIRECTORIES。我认为在您的示例中QT_QTGUI_INCLUDE_DIR 变量的值是/usr/include/qt4/QtGui,但是您需要将/usr/include/qt4 添加到INCLUDE_DIRECTORIES,因为在代码中包含语句使用路径&lt;QtGui/qwidget.h&gt;

INCLUDE_DIRECTORIES("/usr/include/qt4")

【讨论】:

    【解决方案2】:

    感谢@gomons,我能够编译它。

    我在 CmakeList 中添加了以下行:

    INCLUDE_DIRECTORIES("/usr/include/qt4/")
    

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2020-01-20
      • 2017-03-08
      • 2018-09-30
      • 2019-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-05
      相关资源
      最近更新 更多