我有一个基于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"',我尝试了一些方法来解决,但没有一个没有工作,任何帮助赞赏。
答案 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)