Qt+ROS GUI build error: undefined reference

asked 2016-02-09 10:33:06 -0600

Sounlligen gravatar image

Hi everyone. I'm using ROS Indigo on Lubuntu Trusty. I'm trying to make a ROS node using Qt GUI. The problem is that when I try to build it, the error occurs:

main.cpp:(.text+0x37): undefined reference to `QApplication::QApplication(int&, char**, int)'
main.cpp:(.text+0x5f): undefined reference to `QApplication::exec()'
main.cpp:(.text+0x7f): undefined reference to `QApplication::~QApplication()'
main.cpp:(.text+0xa9): undefined reference to `QApplication::~QApplication()'
CMakeFiles/setup_node.dir/mainwindow.cpp.o: In function `MainWindow::MainWindow(QWidget*)':
mainwindow.cpp:(.text+0x46): undefined reference to `QMainWindow::QMainWindow(QWidget*, QFlags<Qt::WindowType>)'
mainwindow.cpp:(.text+0x8b): undefined reference to `QPixmap::QPixmap()'
mainwindow.cpp:(.text+0x9e): undefined reference to `QPixmap::QPixmap()'
mainwindow.cpp:(.text+0xb1): undefined reference to `QPixmap::QPixmap()'
mainwindow.cpp:(.text+0xc6): undefined reference to `QPixmap::QPixmap()'

Of course there's much more, but it's just a part of it.

My CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.12)
project(amigo_bot)

set(SOURCES main.cpp mainwindow.cpp painter.cpp information.cpp)

find_package(Qt4 REQUIRED COMPONENTS QtGui QtCore)

set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
)

catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES pioneer_escape
#  CATKIN_DEPENDS other_catkin_pkg
#  DEPENDS system_lib
)

include(${QT_USE_FILE})

add_definitions(${Qt4_DEFINITIONS})

include_directories(include 
${catkin_INCLUDE_DIRS}
${Qt_INCLUDE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR})

qt4_wrap_ui(UI_SRCS mainwindow.ui)
qt4_wrap_cpp(MOC_SRCS mainwindow.h painter.h information.h)

add_executable(setup_node ${SOURCES} ${UI_SRCS} ${MOC_SRCS})
target_link_libraries(setup_node ${catkin_LIBRARIES} ${Qt_LIBRARIES})

Thank you for your help.

edit retag flag offensive close merge delete