2

QtCreator 2.7.2 をインストールしましたが、 QApplication を含むコードをコンパイルしようとすると、エラー :Error QApplication: no such file or directory が表示されます。

チュートリアル コード「メモ帳」をスムーズにコンパイルでき、/usr/include/qt4/QtGui/QApplication で QApplication を見つけることができます。

これが私のコードです: #include #include "framework/vision_app.h"

int main(int argc, char** argv)
{
    QApplication qapp(argc, argv);

    VisionApp vapp;
    if (vapp.init(argc, argv))
    {
       return qapp.exec();
    }
    else
    {
        return 1;
    }
}

さらに言うと、.pro ファイルはありません。コードのパッケージ化には cmake を使用します。

ここに私のcmakelistがあります:

cmake_minimum_required(VERSION 2.4.6)
include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)

# Set the build type.  Options are:
#  Coverage       : w/ debug symbols, w/o optimization, w/ code-coverage
#  Debug          : w/ debug symbols, w/o optimization
#  Release        : w/o debug symbols, w/ optimization
#  RelWithDebInfo : w/ debug symbols, w/ optimization
#  MinSizeRel     : w/o debug symbols, w/ optimization, stripped binaries
#set(ROS_BUILD_TYPE RelWithDebInfo)

rosbuild_init()
rosbuild_add_boost_directories()

find_package(OpenCV 2.3 REQUIRED)
if(OpenCV_FOUND)
  message(STATUS "OpenCV include: ${OpenCV_INCLUDE_DIRS}")
  message(STATUS "OpenCV libs: ${OpenCV_LIBS}")
  include_directories(${OpenCV_INCLUDE_DIRS})
else(OpenCV_FOUND)
  message(SEND_ERROR "OpenCV not found!!")
endif()

# Qt4 requirements
include_directories(${CMAKE_CURRENT_BINARY_DIR})
set(QT_USE_QTOPENGL TRUE)
find_package(OpenGL REQUIRED)
message (STATUS "OpenGL_found:" ${OPENGL_FOUND})

find_package(Qt4 REQUIRED)
include(${QT_USE_FILE})
add_definitions(${QT_DEFINITIONS})
add_definitions(-DQT_NO_KEYWORDS)

#set the default path for built executables to the "bin" directory
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
#set the default path for built libraries to the "lib" directory
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

#uncomment if you have defined messages
#rosbuild_genmsg()
#uncomment if you have defined services
#rosbuild_gensrv()

include_directories(${PROJECT_SOURCE_DIR}/src)
include_directories(${PROJECT_SOURCE_DIR}/src/gui)
set(we_vision_HDRS src/framework/vision_app.h
  src/gui/main_window.h
)
set(we_vision_SRCS src/vision_node_qt.cpp
  src/framework/vision_app.cpp
  src/gui/main_window.cpp
)
set(we_vision_UIS res/main_window.ui)
QT4_WRAP_CPP(we_vision_HDRS_MOC ${we_vision_HDRS})
QT4_WRAP_UI(we_vision_UI_HDRS ${we_vision_UIS})

rosbuild_add_executable(vision_node_qt ${we_vision_SRCS}
  ${we_vision_HDRS_MOC}
  ${we_vision_UI_HDRS}
)
target_link_libraries(vision_node_qt ${OpenCV_LIBS} ${QT_LIBRARIES} ${OPENGL_LIBRARIES})
rosbuild_link_boost(vision_node_qt thread filesystem system)

誰でも私を助けることができますか?

4

5 に答える 5

3

信じられないかもしれませんが、非常に古いプロジェクトで、あなたが抱えていたのとまったく同じ問題が発生しました: Error QApplication: no such file or directory

私が発見したこと: 私が提案したように、MESSAGE(${QT_INCLUDES}) を CMakeLists.txt に追加しました。これにより、非常に興味深いことが明らかになりました。私の Qt インクルードはすべて、私のマシンにはもう存在しない古い Qt 4.8.2 を指していました。新しいキットを追加して CMake を実行しても、CMakeCache.txt が更新されませんでした。キットは私の最近の Qt 4.8.5 に接続されていましたが、cmake は Qt 4.8.2 を「見つけました」。古い CMakeCache.txt を削除して問題を解決しました

QtCreator が CMakeCache.txt を見つけられなかった場合、独自に作成しました。しかし、古い古いものを持っていた場所ではなく、ビルドフォルダーにあります。したがって、コマンドラインが機能するのに QtCreator が機能しない理由は、おそらくこれが説明です。2 つの異なる QMakeCache.txt ファイルがあります。コマンドラインで正しいものを使用すると、QtCreator は独自の古いものを使用します。

于 2013-08-24T12:25:42.147 に答える
1

include_directories() を何度か見かけます。私はこれを試したことがないので、この方法でインクルード パスに追加するのか、パスを何度も上書きするのかわかりません。

試す:

include_directories(
  ${PROJECT_SOURCE_DIR}/src
  ${PROJECT_SOURCE_DIR}/src/gui
  ${QT_INCLUDES}
  ${CMAKE_CURRENT_BINARY_DIR}
  #more includes if necessary
)

特に include_directories に ${QT_INCLUDES} を追加してください。

于 2013-08-13T05:34:49.537 に答える
0

(qmakeの代わりに)qmake-qt4を使用するとうまくいきました。

于 2013-12-31T22:45:21.450 に答える
0

2点で発生する可能性があり、

  1. Qt5 でリリースされた QtCreator2.7.2。.pro ファイルにこの行
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    を追加して、プロジェクトを再構築することができます。

  2. コードが GUI ベースの場合、.pro にQT += gui

于 2013-08-13T07:56:16.630 に答える