QApplication有一个错误:没有这样的文件或目录

时间:2013-08-12 23:59:45

标签: qt

我已经安装了QtCreator 2.7.2,但是当我尝试编译我的代码包括QApplication时,它给了我那个错误:错误QApplication:没有这样的文件或目录。

它可以顺利编译教程代码“notepad”,我可以在/ usr / include / qt4 / QtGui / QApplication中找到QApplication。

这是我的代码:     #包括     #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)

任何人都可以帮助我吗?

5 个答案:

答案 0 :(得分:3)

你不会相信它,但我只是遇到了一个非常旧的项目你遇到的问题完全相同:错误QApplication:没有这样的文件或目录

我发现了什么: 我向我的CMakeLists.txt添加了MESSAGE($ {QT_INCLUDES})。这揭示了一些非常有趣的东西:我所有的Qt都指向了旧的Qt 4.8.2,这在我的机器上已经不存在了。即使我添加了一个新工具包并运行了CMake,它也没有更新CMakeCache.txt。该工具包连接到我最近的Qt 4.8.5,但是cmake'发现'Qt 4.8.2。我通过删除旧的CMakeCache.txt

解决了我的问题

当QtCreator找不到CMakeCache.txt时,它创建了自己的。但不是我的旧的,过时的,但在build文件夹中。所以也许这就是解释,为什么你的命令行工作,而不是QtCreator:有两个不同的QMakeCache.txt文件。在命令行上你使用正确的,QtCreator使用它自己过时的。

答案 1 :(得分: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}。

答案 2 :(得分:1)

以下命令(在add_executable之后)为我做了诀窍:

qt5_use_modules(${PROJECT_NAME} Widgets)

答案 3 :(得分:0)

可能会导致两点,

  1. QtCreator2.7.2随Qt5发布。在.pro文件中,您可以添加此行 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    并重新重建你的项目。

  2. 如果您的代码是基于GUI的,请确保您的.pro有QT += gui

答案 4 :(得分:0)

使用qmake-qt4(而不是qmake)为我工作。