Unable to include directories in CMake



  • Hi, I am trying to write a CMakeLists.txt for one of my project. Details about the versions are as follows:

    Qt 5.5.1 (Ubuntu 16.04 distro Version)
    CMake 3.5.1

    cmake_minimum_required(VERSION 2.8.3)

    project(aps_ros)

    find_package(catkin REQUIRED COMPONENTS rviz roscpp)

    find_package(VTK REQUIRED)

    catkin_package()

    set(VTK_INCLUDE_DIRS /usr/local/include/vtk-7.0/)
    set(VTK_LIBRARY_DIRS /usr/local/lib)
    set(CMAKE_INCLUDE_CURRENT_DIR ON)

    set(QT_INCLUDES /usr/include/x86_64-linux-gnu/qt5/)
    set(QT_LIBRARIES /usr/lib/x86_64-linux-gnu)

    include_directories(${catkin_INCLUDE_DIRS} ${VTK_INCLUDE_DIRS} ${QT_INCLUDES} ${QT_INCLUDES}/QtCore)

    link_directories(${catkin_LIBRARY_DIRS} ${VTK_LIBRARY_DIRS})

    set(CMAKE_AUTOMOC ON)
    set(CMAKE_AUTOUIC ON)

    if(rviz_QT_VERSION VERSION_LESS "5")
    message(STATUS "Using Qt4 based on the rviz_QT_VERSION: ${rviz_QT_VERSION}")
    find_package(Qt4 ${rviz_QT_VERSION} EXACT REQUIRED QtCore QtGui)
    include(${QT_USE_FILE})
    else()
    message(STATUS "Using Qt5 based on the rviz_QT_VERSION: ${rviz_QT_VERSION}")
    find_package(Qt5 ${rviz_QT_VERSION} EXACT REQUIRED Core Gui OpenGL Widgets)
    endif()

    add_definitions(-DQT_THREAD_SUPPORT)

    set(HEADER_FILES configdialog.h vwidget.h loggerwidget.h mainwindow.h)
    set(SOURCE_FILES configdialog.cpp vwidget.cpp loggerwidget.cpp mainwindow.cpp main.cpp)
    set(WINDOW_FORMS configdialog.ui mainwindow.ui)

    qt5_wrap_ui(MOC_UI_FILES ${WINDOW_FORMS})

    qt5_wrap_cpp(SRC_FILES ${SOURCE_FILES})

    add_executable(aps ${SRC_FILES} ${MOC_UI_FILES} ${HEADER_FILES})

    target_link_libraries(aps Qt5::Core Qt5::Widgets Qt5::Gui ${catkin_LIBRARIES} ${VTK_LIBRARIES} ${MOC_UI_FILES})

    install(TARGETS aps DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})

    /***********************************************

    I am receiving the following error:

    [ 84%] Linking CXX executable /home/hemanth/viz_ws/devel/lib/aps_ros/aps
    ui_configdialog.h:12:27: fatal error: QtCore/QVariant: No such file or directory
    compilation terminated.
    ui_mainwindow.h:12:27: fatal error: QtCore/QVariant: No such file or directory
    compilation terminated.
    APS_ROS/CMakeFiles/aps.dir/build.make:418: recipe for target '/home/hemanth/viz_ws/devel/lib/aps_ros/aps' failed
    make[2]: *** [/home/hemanth/viz_ws/devel/lib/aps_ros/aps] Error 1
    CMakeFiles/Makefile2:3236: recipe for target 'APS_ROS/CMakeFiles/aps.dir/all' failed
    make[1]: *** [APS_ROS/CMakeFiles/aps.dir/all] Error 2
    Makefile:138: recipe for target 'all' failed
    make: *** [all] Error 2
    Invoking "make -j4 -l4" failed

    Any suggestions on how to correct this issue?

    Thanks in advance..!!!



  • I have solved the issue by searching in internet. May be this could help to solve if you face any issues:
    (This CMakeLists.txt is used for a project in Qt and integrates ROS functionalities in it)

    Please do let me know, if you have any queries.....

    ## First start with some standard catkin stuff.
    cmake_minimum_required(VERSION 2.8.3)
    
    project(aps_ros)
    
    # Set mandatory compiler c++ standard support
    set(CPP_STD "11")
    if(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" OR ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
      include(CheckCXXCompilerFlag)
      CHECK_CXX_COMPILER_FLAG("-std=c++${CPP_STD}" COMPILER_SUPPORTS_CXX${CPP_STD})
      if(COMPILER_SUPPORTS_CXX${CPP_STD})
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++${CPP_STD}")
      else()
        message(FATAL_ERROR "ERROR: The compiler ${CMAKE_CXX_COMPILER} has no C++${CPP_STD} support.\n"
                            "Please use a different C++ compiler.")
      endif()
    endif()
    
    
    find_package(catkin REQUIRED COMPONENTS rviz roscpp)
    
    find_package(VTK REQUIRED)
    
    catkin_package()
    set(CMAKE_INCLUDE_PATH /usr/include/x86_64-linux-gnu/qt5/)
    set(VTK_INCLUDE_DIRS /usr/local/include/vtk-7.0/)
    set(VTK_LIBRARY_DIRS /usr/local/lib)
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
    
    
    ## This setting causes Qt's "MOC" generation to happen automatically.
    ##set(CMAKE_AUTOMOC ON)
    ##set(CMAKE_AUTOUIC ON)
    
    ## This plugin includes Qt widgets, so we must include Qt.
    ## We'll use the version that rviz used so they are compatible.
    if(rviz_QT_VERSION VERSION_LESS "5")
      message(STATUS "Using Qt4 based on the rviz_QT_VERSION: ${rviz_QT_VERSION}")
      find_package(Qt4 ${rviz_QT_VERSION} EXACT REQUIRED QtCore QtGui)
      ## pull in all required include dirs, define QT_LIBRARIES, etc.
      include(${QT_USE_FILE})
    else()
      message(STATUS "Using Qt5 based on the rviz_QT_VERSION: ${rviz_QT_VERSION}")
    message( STATUS "-----> Current Qt Installation Path : " ${QTDIR})
      find_package(Qt5 ${rviz_QT_VERSION} EXACT REQUIRED Core Widgets)
    	##find_package(Qt5Core)
    	##find_package(Qt5Gui)
    	##find_package(Qt5Widgets)
    	##find_package(Qt5OpenGL)
      ## make target_link_libraries(${QT_LIBRARIES}) pull in all required dependencies
      set(QT_LIBRARIES Qt5::Widgets Qt5::Core)	
      ##include(${QT_USE_FILE})
      ##include(${VTK_USE_FILE})
    endif()
    
    ## I prefer the Qt signals and slots to avoid defining "emit", "slots",
    ## etc because they can conflict with boost signals, so define QT_NO_KEYWORDS here.
    ##add_definitions(-DQT_NO_KEYWORDS)
    add_definitions(${QT_DEFINITIONS})
    
    
    include_directories(${catkin_INCLUDE_DIRS} ${VTK_INCLUDE_DIRS} ${CMAKE_BINARY_DIR})
    
    link_directories(${catkin_LIBRARY_DIRS} ${VTK_LIBRARY_DIRS})
    
    set(HEADER_FILES 
    		include/configdialog.h 
    		include/vwidget.h 
    		include/loggerwidget.h 
    		include/mainwindow.h
    		include/rosvizwidget.h)
    set(SOURCES 
    		sources/configdialog.cpp 
    		sources/vwidget.cpp 
    		sources/loggerwidget.cpp 
    		sources/rosvizwidget.cpp
    		sources/mainwindow.cpp 
    		sources/main.cpp)
    set(WINDOW_FORMS 
    		windows/configdialog.ui 
    		windows/mainwindow.ui)
    
    qt5_wrap_ui(UI_HEADERS ${WINDOW_FORMS})
    
    qt5_wrap_cpp(MOC_SRCS ${HEADER_FILES})
    
    add_executable(aps ${SOURCES} ${MOC_SRCS} ${UI_HEADERS})
    
    target_include_directories(
      aps
        PUBLIC
          ${CMAKE_CURRENT_SOURCE_DIR}/include
        PRIVATE
          # NOTHING YET
    )
    
    ## Link external libraries here
    target_link_libraries(aps ${QT_LIBRARIES} ${catkin_LIBRARIES} ${VTK_LIBRARIES})
    
    ## Install
    install(TARGETS aps DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
    

Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.