使用cmake和提升的小部件编译qt gui时出错

时间:2014-06-14 16:40:35

标签: qt4 cmake subclassing qtgui ros

我有一个基于ROS(catkin)的qt GUI项目,这是我的cmake

cmake_minimum_required(VERSION 2.8.0)
project(jir_seg)

find_package(catkin REQUIRED COMPONENTS qt_build roscpp)
include_directories(${catkin_INCLUDE_DIRS})

catkin_package()

rosbuild_prepare_qt4(QtCore QtGui)

file(GLOB QT_FORMS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ui/*.ui)
file(GLOB QT_RESOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} resources/*.qrc)
file(GLOB_RECURSE QT_MOC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS      include/jir_seg/*.hpp)

QT4_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES})
QT4_WRAP_UI(QT_FORMS_HPP ${QT_FORMS})
QT4_WRAP_CPP(QT_MOC_HPP ${QT_MOC})

file(GLOB_RECURSE QT_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS src/*.cpp)

add_executable(jir_seg ${QT_SOURCES} ${QT_RESOURCES_CPP} ${QT_FORMS_HPP} ${QT_MOC_HPP})
target_link_libraries(jir_seg ${QT_LIBRARIES} ${catkin_LIBRARIES} )
install(TARGETS jir_seg RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})

它在catkin中自动生成cmake,在我的项目中我有一个来自qgeraphicview(JIRSEGSubClassQGV.hpp)的子类,我将一个小部件提升到它,问题是当我编译这段代码时我得到了这个错误

In file included from /home/vahid/catkin_ws/src/jir_seg/src/../include/jir_seg  /JIRSEG2DWindow.hpp:14:0,
             from /home/vahid/catkin_ws/src/jir_seg/src/JIRSEG2DWindow.cpp:1:
/home/vahid/catkin_ws/build/jir_seg/ui_JIRSEG2DWindow.h:26:33: fatal error:   JIRSEGSubClassQGV.hpp: No such file or directory
compilation terminated.
In file included from /home/vahid/catkin_ws/src/jir_seg/src/../include/jir_seg/JIRSEG2DWindow.hpp:14:0,
             from /home/vahid/catkin_ws/src/jir_seg/src/../include/jir_seg/JIRSEGMainWindow.hpp:9,
             from /home/vahid/catkin_ws/src/jir_seg/src/JIRSEGMainWindow.cpp:1:
/home/vahid/catkin_ws/build/jir_seg/ui_JIRSEG2DWindow.h:26:33: fatal error:  JIRSEGSubClassQGV.hpp: No such file or directory
compilation terminated.
In file included from /home/vahid/catkin_ws/src/jir_seg/src/../include/jir_seg  /JIRSEG2DWindow.hpp:14:0,
             from /home/vahid/catkin_ws/src/jir_seg/src/../include/jir_seg  /JIRSEGMainWindow.hpp:9,
             from /home/vahid/catkin_ws/src/jir_seg/src/main.cpp:5:
/home/vahid/catkin_ws/build/jir_seg/ui_JIRSEG2DWindow.h:26:33: fatal error:   JIRSEGSubClassQGV.hpp: No such file or directory
compilation terminated.
make[2]: *** [jir_seg/CMakeFiles/jir_seg.dir/src/JIRSEGMainWindow.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [jir_seg/CMakeFiles/jir_seg.dir/src/JIRSEG2DWindow.cpp.o] Error 1
make[2]: *** [jir_seg/CMakeFiles/jir_seg.dir/src/main.cpp.o] Error 1
make[1]: *** [jir_seg/CMakeFiles/jir_seg.dir/all] Error 2
make: *** [all] Error 2

UIC添加到ui _ * .h的标题是' #include" JIRSEGSubClassQGV.hpp"',我尝试了一些方法来解决,但没有一个没有工作,任何帮助赞赏。

1 个答案:

答案 0 :(得分:1)

CMake不了解目录的用途,因此如果将头文件放在子目录include中,则必须使用CMake指令通知iclude_directories:< / p>

  

include_directories($ {CMAKE_CURRENT_SOURCE_DIR})   include_directories($ {CMAKE_CURRENT_SOURCE_DIR} /包括)   include_directories($ {CMAKE_CURRENT_SOURCE_DIR} /包含/ jir_seg)