Auto detect which Qt version to use (Qt5 has priority if both are installed). ROS Kinetic fix for vtk libproj.so not found bug.

This commit is contained in:
matlabbe
2016-05-04 16:45:19 -04:00
parent d2882a88f3
commit b8c2cd9f94
12 changed files with 58 additions and 71 deletions
+12 -8
View File
@@ -32,8 +32,6 @@ SET(PROJECT_VERSION_PATCH ${RTABMAP_PATCH_VERSION})
SET(PROJECT_SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}") SET(PROJECT_SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
SET(RTABMAP_QT_VERSION 4 CACHE STRING "Which QT version to use")
####### COMPILATION PARAMS ####### ####### COMPILATION PARAMS #######
# In case of Makefiles if the user does not setup CMAKE_BUILD_TYPE, assume it's Release: # In case of Makefiles if the user does not setup CMAKE_BUILD_TYPE, assume it's Release:
IF(${CMAKE_GENERATOR} MATCHES ".*Makefiles") IF(${CMAKE_GENERATOR} MATCHES ".*Makefiles")
@@ -143,6 +141,11 @@ FIND_PACKAGE(OpenCV REQUIRED QUIET)
FIND_PACKAGE(PCL 1.7 REQUIRED QUIET) FIND_PACKAGE(PCL 1.7 REQUIRED QUIET)
FIND_PACKAGE(ZLIB REQUIRED QUIET) FIND_PACKAGE(ZLIB REQUIRED QUIET)
# fix libproj.so not found on Xenial
if(NOT "${PCL_LIBRARIES}" STREQUAL "")
list(REMOVE_ITEM PCL_LIBRARIES "vtkproj4")
endif()
# OpenMP ("-fopenmp" should be added for flann included in PCL) # OpenMP ("-fopenmp" should be added for flann included in PCL)
# the gcc-4.2.1 coming with MacOS X is not compatible with the OpenMP pragmas we use, so disabling OpenMP for it # the gcc-4.2.1 coming with MacOS X is not compatible with the OpenMP pragmas we use, so disabling OpenMP for it
if((NOT APPLE) OR (NOT CMAKE_COMPILER_IS_GNUCXX) OR (GCC_VERSION VERSION_GREATER 4.2.1) OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")) if((NOT APPLE) OR (NOT CMAKE_COMPILER_IS_GNUCXX) OR (GCC_VERSION VERSION_GREATER 4.2.1) OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang"))
@@ -167,12 +170,13 @@ IF(ZLIB_FOUND)
ENDIF(ZLIB_FOUND) ENDIF(ZLIB_FOUND)
IF(WITH_QT) IF(WITH_QT)
# If Qt is here, the GUI will be built # If Qt is here, the GUI will be built
IF("${RTABMAP_QT_VERSION}" STREQUAL "4") # look for Qt5 before Qt4
FIND_PACKAGE(Qt5 COMPONENTS Widgets Core Gui Svg)
IF(NOT Qt5_FOUND)
FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtSvg) FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtSvg)
ELSE() ENDIF(NOT Qt5_FOUND)
FIND_PACKAGE(Qt5 COMPONENTS Widgets Core Gui Svg)
ENDIF()
IF(QT4_FOUND OR Qt5_FOUND) IF(QT4_FOUND OR Qt5_FOUND)
FIND_PACKAGE(VTK REQUIRED) FIND_PACKAGE(VTK REQUIRED)
IF("${VTK_MAJOR_VERSION}" EQUAL 5) IF("${VTK_MAJOR_VERSION}" EQUAL 5)
@@ -592,7 +596,7 @@ MESSAGE(STATUS " With Qt5 = YES (License: Open Source or Comme
ELSEIF(NOT WITH_QT) ELSEIF(NOT WITH_QT)
MESSAGE(STATUS " With Qt = NO (WITH_QT=OFF)") MESSAGE(STATUS " With Qt = NO (WITH_QT=OFF)")
ELSE() ELSE()
MESSAGE(STATUS " With Qt = NO (Qt not found, to use Qt5 you should set -DRTABMAP_QT_VERSION=5)") MESSAGE(STATUS " With Qt = NO (Qt not found)")
ENDIF() ENDIF()
MESSAGE(STATUS "--------------------------------------------") MESSAGE(STATUS "--------------------------------------------")
+6 -6
View File
@@ -5,7 +5,7 @@ SET(headers_ui
) )
#This will generate moc_* for Qt #This will generate moc_* for Qt
IF("${RTABMAP_QT_VERSION}" STREQUAL "4") IF(QT4_FOUND)
QT4_WRAP_CPP(moc_srcs ${headers_ui}) QT4_WRAP_CPP(moc_srcs ${headers_ui})
ELSE() ELSE()
QT5_WRAP_CPP(moc_srcs ${headers_ui}) QT5_WRAP_CPP(moc_srcs ${headers_ui})
@@ -25,9 +25,9 @@ SET(INCLUDE_DIRS
${PCL_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS}
) )
IF("${RTABMAP_QT_VERSION}" STREQUAL "4") IF(QT4_FOUND)
INCLUDE(${QT_USE_FILE}) INCLUDE(${QT_USE_FILE})
ENDIF() ENDIF(QT4_FOUND)
SET(LIBRARIES SET(LIBRARIES
${QT_LIBRARIES} ${QT_LIBRARIES}
@@ -73,9 +73,9 @@ ELSE()
ADD_EXECUTABLE(rtabmap ${SRC_FILES}) ADD_EXECUTABLE(rtabmap ${SRC_FILES})
ENDIF() ENDIF()
TARGET_LINK_LIBRARIES(rtabmap rtabmap_core rtabmap_gui rtabmap_utilite ${LIBRARIES}) TARGET_LINK_LIBRARIES(rtabmap rtabmap_core rtabmap_gui rtabmap_utilite ${LIBRARIES})
IF("${RTABMAP_QT_VERSION}" STREQUAL "5") IF(Qt5_FOUND)
QT5_USE_MODULES(rtabmap Widgets Core Gui Svg PrintSupport) QT5_USE_MODULES(rtabmap Widgets Core Gui Svg PrintSupport)
ENDIF() ENDIF(Qt5_FOUND)
IF(APPLE AND BUILD_AS_BUNDLE) IF(APPLE AND BUILD_AS_BUNDLE)
SET_TARGET_PROPERTIES(rtabmap PROPERTIES SET_TARGET_PROPERTIES(rtabmap PROPERTIES
@@ -166,7 +166,7 @@ IF((APPLE AND BUILD_AS_BUNDLE) OR WIN32)
# over. # over.
# To find dependencies, cmake use "otool" on Apple and "dumpbin" on Windows (make sure you have one of them). # To find dependencies, cmake use "otool" on Apple and "dumpbin" on Windows (make sure you have one of them).
install(CODE " install(CODE "
file(GLOB_RECURSE QTPLUGINS \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/plugins/*${CMAKE_SHARED_LIBRARY_SUFFIX}\") file(GLOB_RECURSE QTPLUGINS \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${plugin_dest_dir}/plugins/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
set(BU_CHMOD_BUNDLE_ITEMS ON) set(BU_CHMOD_BUNDLE_ITEMS ON)
include(\"BundleUtilities\") include(\"BundleUtilities\")
fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\") fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
+7 -12
View File
@@ -16,7 +16,6 @@ if(internal)
rtabmap_gui rtabmap_gui
rtabmap_utilite rtabmap_utilite
) )
SET(MY_QT_VERSION ${RTABMAP_QT_VERSION})
else() else()
# external build # external build
PROJECT( MyProject ) PROJECT( MyProject )
@@ -25,15 +24,11 @@ else()
FIND_PACKAGE(OpenCV REQUIRED) FIND_PACKAGE(OpenCV REQUIRED)
FIND_PACKAGE(PCL 1.7 REQUIRED) FIND_PACKAGE(PCL 1.7 REQUIRED)
# Use Qt4 or Qt5 # Find Qt5 first
SET(MY_QT_VERSION 4 CACHE STRING "Which Qt version to use") FIND_PACKAGE(Qt5 COMPONENTS Widgets Core Gui Svg)
IF("${MY_QT_VERSION}" STREQUAL "4") IF(NOT Qt5_FOUND)
message("4") FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtSvg)
FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtSvg) ENDIF(NOT Qt5_FOUND)
ELSE()
message("5")
FIND_PACKAGE(Qt5 COMPONENTS Widgets Core Gui Svg)
ENDIF()
endif() endif()
SET(INCLUDE_DIRS SET(INCLUDE_DIRS
@@ -42,9 +37,9 @@ SET(INCLUDE_DIRS
${PCL_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS}
) )
IF("${MY_QT_VERSION}" STREQUAL "4") IF(QT4_FOUND)
INCLUDE(${QT_USE_FILE}) INCLUDE(${QT_USE_FILE})
ENDIF() ENDIF(QT4_FOUND)
SET(LIBRARIES SET(LIBRARIES
${RTABMap_LIBRARIES} ${RTABMap_LIBRARIES}
+8 -13
View File
@@ -16,7 +16,6 @@ if(internal)
rtabmap_gui rtabmap_gui
rtabmap_utilite rtabmap_utilite
) )
SET(MY_QT_VERSION ${RTABMAP_QT_VERSION})
else() else()
# external build # external build
PROJECT( MyProject ) PROJECT( MyProject )
@@ -25,15 +24,11 @@ else()
FIND_PACKAGE(OpenCV REQUIRED) FIND_PACKAGE(OpenCV REQUIRED)
FIND_PACKAGE(PCL 1.7 REQUIRED) FIND_PACKAGE(PCL 1.7 REQUIRED)
# Use Qt4 or Qt5 # Find Qt5 first
SET(MY_QT_VERSION 4 CACHE STRING "Which Qt version to use") FIND_PACKAGE(Qt5 COMPONENTS Widgets Core Gui Svg)
IF("${MY_QT_VERSION}" STREQUAL "4") IF(NOT Qt5_FOUND)
message("4") FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtSvg)
FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtSvg) ENDIF(NOT Qt5_FOUND)
ELSE()
message("5")
FIND_PACKAGE(Qt5 COMPONENTS Widgets Core Gui Svg)
ENDIF()
endif() endif()
SET(INCLUDE_DIRS SET(INCLUDE_DIRS
@@ -42,9 +37,9 @@ SET(INCLUDE_DIRS
${PCL_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS}
) )
IF("${MY_QT_VERSION}" STREQUAL "4") IF(QT4_FOUND)
INCLUDE(${QT_USE_FILE}) INCLUDE(${QT_USE_FILE})
ENDIF() ENDIF(QT4_FOUND)
SET(LIBRARIES SET(LIBRARIES
${RTABMap_LIBRARIES} ${RTABMap_LIBRARIES}
@@ -55,7 +50,7 @@ SET(LIBRARIES
INCLUDE_DIRECTORIES(${INCLUDE_DIRS}) INCLUDE_DIRECTORIES(${INCLUDE_DIRS})
IF("${MY_QT_VERSION}" STREQUAL "4") IF(QT4_FOUND)
QT4_WRAP_CPP(moc_srcs MapBuilder.h) QT4_WRAP_CPP(moc_srcs MapBuilder.h)
ELSE() ELSE()
QT5_WRAP_CPP(moc_srcs MapBuilder.h) QT5_WRAP_CPP(moc_srcs MapBuilder.h)
+7 -12
View File
@@ -16,7 +16,6 @@ if(internal)
rtabmap_gui rtabmap_gui
rtabmap_utilite rtabmap_utilite
) )
SET(MY_QT_VERSION ${RTABMAP_QT_VERSION})
else() else()
# external build # external build
PROJECT( MyProject ) PROJECT( MyProject )
@@ -25,15 +24,11 @@ else()
FIND_PACKAGE(OpenCV REQUIRED) FIND_PACKAGE(OpenCV REQUIRED)
FIND_PACKAGE(PCL 1.7 REQUIRED) FIND_PACKAGE(PCL 1.7 REQUIRED)
# Use Qt4 or Qt5 # Find Qt5 first
SET(MY_QT_VERSION 4 CACHE STRING "Which Qt version to use") FIND_PACKAGE(Qt5 COMPONENTS Widgets Core Gui Svg)
IF("${MY_QT_VERSION}" STREQUAL "4") IF(NOT Qt5_FOUND)
message("4") FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtSvg)
FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtSvg) ENDIF(NOT Qt5_FOUND)
ELSE()
message("5")
FIND_PACKAGE(Qt5 COMPONENTS Widgets Core Gui Svg)
ENDIF()
endif() endif()
SET(INCLUDE_DIRS SET(INCLUDE_DIRS
@@ -42,9 +37,9 @@ SET(INCLUDE_DIRS
${PCL_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS}
) )
IF("${MY_QT_VERSION}" STREQUAL "4") IF(QT4_FOUND)
INCLUDE(${QT_USE_FILE}) INCLUDE(${QT_USE_FILE})
ENDIF() ENDIF(QT4_FOUND)
SET(LIBRARIES SET(LIBRARIES
${RTABMap_LIBRARIES} ${RTABMap_LIBRARIES}
+5 -5
View File
@@ -48,7 +48,7 @@ SET(qrc
./GuiLib.qrc ./GuiLib.qrc
) )
IF("${RTABMAP_QT_VERSION}" STREQUAL "4") IF(QT4_FOUND)
# generate rules for building source files from the resources # generate rules for building source files from the resources
QT4_ADD_RESOURCES(srcs_qrc ${qrc}) QT4_ADD_RESOURCES(srcs_qrc ${qrc})
@@ -106,9 +106,9 @@ SET(INCLUDE_DIRS
${PCL_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS}
) )
IF("${RTABMAP_QT_VERSION}" STREQUAL "4") IF(QT4_FOUND)
INCLUDE(${QT_USE_FILE}) INCLUDE(${QT_USE_FILE})
ENDIF() ENDIF(QT4_FOUND)
SET(LIBRARIES SET(LIBRARIES
${QT_LIBRARIES} ${QT_LIBRARIES}
@@ -131,9 +131,9 @@ ADD_LIBRARY(rtabmap_gui ${SRC_FILES})
# Linking with Qt libraries # Linking with Qt libraries
TARGET_LINK_LIBRARIES(rtabmap_gui rtabmap_core rtabmap_utilite ${LIBRARIES}) TARGET_LINK_LIBRARIES(rtabmap_gui rtabmap_core rtabmap_utilite ${LIBRARIES})
IF("${RTABMAP_QT_VERSION}" STREQUAL "5") IF(Qt5_FOUND)
QT5_USE_MODULES(rtabmap_gui Widgets Core Gui Svg PrintSupport) QT5_USE_MODULES(rtabmap_gui Widgets Core Gui Svg PrintSupport)
ENDIF() ENDIF(Qt5_FOUND)
SET_TARGET_PROPERTIES( SET_TARGET_PROPERTIES(
rtabmap_gui rtabmap_gui
+3 -5
View File
@@ -12,19 +12,17 @@
<buildtool_depend>cmake</buildtool_depend> <buildtool_depend>cmake</buildtool_depend>
<build_depend>libpcl-all-dev</build_depend> <build_depend>libpcl-all-dev</build_depend> <!-- include qt and vtk -->
<build_depend>libqt4-dev</build_depend>
<build_depend>libvtk-qt</build_depend>
<build_depend>libsqlite3-dev</build_depend> <build_depend>libsqlite3-dev</build_depend>
<build_depend>zlib</build_depend> <build_depend>zlib</build_depend>
<build_depend>libfreenect</build_depend> <build_depend>libfreenect</build_depend>
<build_depend>libopenni-dev</build_depend> <build_depend>libopenni-dev</build_depend>
<build_depend>libopenni2-dev</build_depend> <build_depend>libopenni2-dev</build_depend>
<build_depend>cv_bridge</build_depend> <build_depend>cv_bridge</build_depend>
<!-- libproj-dev needed due to error in vtk6 (kinetic)-->
<build_depend>libproj-dev</build_depend>
<run_depend>libpcl-all-dev</run_depend> <run_depend>libpcl-all-dev</run_depend>
<run_depend>libqt4-dev</run_depend>
<run_depend>libvtk-qt</run_depend>
<run_depend>libsqlite3-dev</run_depend> <run_depend>libsqlite3-dev</run_depend>
<run_depend>zlib</run_depend> <run_depend>zlib</run_depend>
<run_depend>libfreenect</run_depend> <run_depend>libfreenect</run_depend>
+2 -2
View File
@@ -6,9 +6,9 @@ SET(INCLUDE_DIRS
${PCL_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS}
) )
IF("${RTABMAP_QT_VERSION}" STREQUAL "4") IF(QT4_FOUND)
INCLUDE(${QT_USE_FILE}) INCLUDE(${QT_USE_FILE})
ENDIF() ENDIF(QT4_FOUND)
SET(LIBRARIES SET(LIBRARIES
${OpenCV_LIBRARIES} ${OpenCV_LIBRARIES}
+2 -2
View File
@@ -12,9 +12,9 @@ SET(INCLUDE_DIRS
${PCL_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS}
) )
IF("${RTABMAP_QT_VERSION}" STREQUAL "4") IF(QT4_FOUND)
INCLUDE(${QT_USE_FILE}) INCLUDE(${QT_USE_FILE})
ENDIF() ENDIF(QT4_FOUND)
SET(LIBRARIES SET(LIBRARIES
${OpenCV_LIBRARIES} ${OpenCV_LIBRARIES}
+2 -2
View File
@@ -11,9 +11,9 @@ SET(INCLUDE_DIRS
${PCL_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS}
) )
IF("${RTABMAP_QT_VERSION}" STREQUAL "4") IF(QT4_FOUND)
INCLUDE(${QT_USE_FILE}) INCLUDE(${QT_USE_FILE})
ENDIF() ENDIF(QT4_FOUND)
SET(LIBRARIES SET(LIBRARIES
${OpenCV_LIBRARIES} ${OpenCV_LIBRARIES}
+2 -2
View File
@@ -11,9 +11,9 @@ SET(INCLUDE_DIRS
${PCL_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS}
) )
IF("${RTABMAP_QT_VERSION}" STREQUAL "4") IF(QT4_FOUND)
INCLUDE(${QT_USE_FILE}) INCLUDE(${QT_USE_FILE})
ENDIF() ENDIF(QT4_FOUND)
SET(LIBRARIES SET(LIBRARIES
${OpenCV_LIBRARIES} ${OpenCV_LIBRARIES}
+2 -2
View File
@@ -8,9 +8,9 @@ SET(INCLUDE_DIRS
${PCL_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS}
) )
IF("${RTABMAP_QT_VERSION}" STREQUAL "4") IF(QT4_FOUND)
INCLUDE(${QT_USE_FILE}) INCLUDE(${QT_USE_FILE})
ENDIF() ENDIF(QT4_FOUND)
SET(LIBRARIES SET(LIBRARIES
${OpenCV_LIBRARIES} ${OpenCV_LIBRARIES}