diff options
author | Jochen Sprickerhof <git@jochen.sprickerhof.de> | 2016-08-15 15:56:43 +0200 |
---|---|---|
committer | Jochen Sprickerhof <git@jochen.sprickerhof.de> | 2016-08-15 15:56:43 +0200 |
commit | cff328462e82392bce32c3c549a259a22c105ae6 (patch) | |
tree | f39ceee15156e5232d48ebb710cfa112ca6265a7 /CMakeLists.txt | |
parent | 8ee0cd905c894d8294ada94bf0adeacd1ea55b84 (diff) |
Imported Upstream version 1.8.0
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 171 |
1 files changed, 100 insertions, 71 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index f0a56003..e5fd763e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,24 @@ ### ---[ PCL global CMake cmake_minimum_required(VERSION 2.8 FATAL_ERROR) +if(POLICY CMP0017) + # Do not include files in CMAKE_MODULE_PATH from files + # in CMake module directory. Fix MXE build + cmake_policy(SET CMP0017 NEW) +endif() + +if(POLICY CMP0020 AND (WIN32 AND NOT MINGW)) + cmake_policy(SET CMP0020 NEW) # Automatically link Qt executables to qtmain target on Windows +endif() + if(POLICY CMP0048) cmake_policy(SET CMP0048 OLD) # do not use VERSION option in project() command endif() +if(POLICY CMP0054) + cmake_policy(SET CMP0054 OLD) # Silent warnings about quoted variables +endif() + set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "possible configurations" FORCE) # In case the user does not setup CMAKE_BUILD_TYPE, assume it's RelWithDebInfo @@ -65,10 +79,15 @@ SET(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel Maintainer." FORCE) -# ---[ Android check -if (ANDROID) - set (PCL_SHARED_LIBS OFF) - message ("PCL shared libs on Android must be: ${PCL_SHARED_LIBS}") +# Compiler identification +# Define a variable CMAKE_COMPILER_IS_X where X is the compiler short name. +# Note: CMake automatically defines one for GNUCXX, nothing to do in this case. +if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + set(CMAKE_COMPILER_IS_CLANG 1) +elseif(__COMPILER_PATHSCALE) + set(CMAKE_COMPILER_IS_PATHSCALE 1) +elseif(MSVC) + set(CMAKE_COMPILER_IS_MSVC 1) endif() include("${PCL_SOURCE_DIR}/cmake/pcl_verbosity.cmake") @@ -108,11 +127,16 @@ if(CMAKE_COMPILER_IS_GNUCXX) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") endif(NOT ANDROID) + if("${CMAKE_SHARED_LINKER_FLAGS}" STREQUAL "" AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin") + SET(CMAKE_SHARED_LINKER_FLAGS "-Wl,--as-needed") + endif() + if(WIN32) if(PCL_SHARED_LIBS) SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--export-all-symbols -Wl,--enable-auto-import") if (MINGW) add_definitions("-DBOOST_THREAD_USE_LIB") + SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition") endif() else(PCL_SHARED_LIBS) add_definitions("-DBOOST_LIB_DIAGNOSTIC -DBOOST_THREAD_USE_LIB") @@ -120,16 +144,15 @@ if(CMAKE_COMPILER_IS_GNUCXX) endif() endif() -if(MSVC) - SET(CMAKE_COMPILER_IS_MSVC 1) - add_definitions ("-DBOOST_ALL_NO_LIB -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -DNOMINMAX /bigobj") +if(CMAKE_COMPILER_IS_MSVC) + add_definitions("-DBOOST_ALL_NO_LIB -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -DNOMINMAX -DPCL_ONLY_CORE_POINT_TYPES /bigobj ${SSE_DEFINITIONS}") if("${CMAKE_CXX_FLAGS}" STREQUAL " /DWIN32 /D_WINDOWS /W3 /GR /EHsc") # Check against default flags SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj /EHsc /fp:precise /wd4800 /wd4521 /wd4251 /wd4275 /wd4305 /wd4355 ${SSE_FLAGS}") # Add extra code generation/link optimizations if(CMAKE_MSVC_CODE_LINK_OPTIMIZATION) SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL") - SET(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG") + SET(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG /OPT:REF") SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG") endif(CMAKE_MSVC_CODE_LINK_OPTIMIZATION) # /MANIFEST:NO") # please, don't disable manifest generation, otherwise crash at start for vs2008 @@ -145,15 +168,16 @@ if(MSVC) endif() endif() -if (__COMPILER_PATHSCALE) - SET(CMAKE_COMPILER_IS_PATHSCALE 1) +if(CMAKE_COMPILER_IS_PATHSCALE) if("${CMAKE_CXX_FLAGS}" STREQUAL "") SET(CMAKE_CXX_FLAGS "-Wno-uninitialized -zerouv -pthread -mp") endif() + if("${CMAKE_SHARED_LINKER_FLAGS}" STREQUAL "") + SET(CMAKE_SHARED_LINKER_FLAGS "-mp") + endif() endif() -if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - SET(CMAKE_COMPILER_IS_CLANG 1) +if(CMAKE_COMPILER_IS_CLANG) if("${CMAKE_C_FLAGS}" STREQUAL "") SET(CMAKE_C_FLAGS "-Qunused-arguments") endif() @@ -167,7 +191,7 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") endif() include("${PCL_SOURCE_DIR}/cmake/pcl_utils.cmake") -set(PCL_VERSION 1.7.2 CACHE STRING "PCL version") +set(PCL_VERSION 1.8.0 CACHE STRING "PCL version") DISSECT_VERSION() GET_OS_INFO() SET_INSTALL_DIRS() @@ -216,27 +240,36 @@ ENDIF("${is_system_dir}" STREQUAL "-1") ### ---[ Find universal dependencies # 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_COMPILER_IS_CLANG)) find_package(OpenMP) endif() if(OPENMP_FOUND) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") message (STATUS "Found OpenMP") - if(MSVC90 OR MSVC10) + if(MSVC) if(MSVC90) set(OPENMP_DLL VCOMP90) elseif(MSVC10) set(OPENMP_DLL VCOMP100) + elseif(MSVC11) + set(OPENMP_DLL VCOMP110) + elseif(MSVC12) + set(OPENMP_DLL VCOMP120) + elseif(MSVC14) + set(OPENMP_DLL VCOMP140) endif(MSVC90) - set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} /DELAYLOAD:${OPENMP_DLL}D.dll") - set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DELAYLOAD:${OPENMP_DLL}.dll") - endif(MSVC90 OR MSVC10) + if(OPENMP_DLL) + set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} /DELAYLOAD:${OPENMP_DLL}D.dll") + set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DELAYLOAD:${OPENMP_DLL}.dll") + else(OPENMP_DLL) + message(WARNING "Delay loading flag for OpenMP DLL is invalid.") + endif(OPENMP_DLL) + endif(MSVC) else(OPENMP_FOUND) message (STATUS "Not found OpenMP") endif() -# Boost (required) -include("${PCL_SOURCE_DIR}/cmake/pcl_find_boost.cmake") + # Eigen (required) find_package(Eigen REQUIRED) include_directories(SYSTEM ${EIGEN_INCLUDE_DIRS}) @@ -258,45 +291,14 @@ if(WITH_LIBUSB) endif(LIBUSB_1_FOUND) endif(WITH_LIBUSB) -# OpenNI -option(WITH_OPENNI "OpenNI driver support" TRUE) -if(WITH_OPENNI) - find_package(OpenNI) - if (OPENNI_FOUND) - set(HAVE_OPENNI ON) - include_directories(SYSTEM ${OPENNI_INCLUDE_DIRS}) - endif(OPENNI_FOUND) -endif(WITH_OPENNI) - -# OpenNI 2 -option(WITH_OPENNI2 "OpenNI 2 driver support" TRUE) -if(WITH_OPENNI2) - find_package(OpenNI2) - if (OPENNI2_FOUND) - set(HAVE_OPENNI2 ON) - include_directories(SYSTEM ${OPENNI2_INCLUDE_DIRS}) - endif(OPENNI2_FOUND) -endif(WITH_OPENNI2) - -# Fotonic (FZ_API) -option(WITH_FZAPI "Build Fotonic Camera support" TRUE) -if(WITH_FZAPI) - find_package(FZAPI) - if (FZAPI_FOUND) - set(HAVE_FZAPI ON) - include_directories(SYSTEM "${FZAPI_INCLUDE_DIR}") - endif(FZAPI_FOUND) -endif(WITH_FZAPI) - -# Intel Perceptional Computing Interface (PXCAPI) -option(WITH_PXCAPI "Build PXC Device support" TRUE) -if(WITH_PXCAPI) - find_package(PXCAPI) - if (PXCAPI_FOUND) - set(HAVE_PXCAPI ON) - include_directories(SYSTEM ${PXCAPI_INCLUDE_DIRS}) - endif(PXCAPI_FOUND) -endif(WITH_PXCAPI) +# Dependencies for different grabbers +PCL_ADD_GRABBER_DEPENDENCY("OpenNI" "OpenNI grabber support") +PCL_ADD_GRABBER_DEPENDENCY("OpenNI2" "OpenNI2 grabber support") +PCL_ADD_GRABBER_DEPENDENCY("FZAPI" "Fotonic camera support") +PCL_ADD_GRABBER_DEPENDENCY("Ensenso" "IDS-Imaging Ensenso camera support") +PCL_ADD_GRABBER_DEPENDENCY("davidSDK" "David Vision Systems SDK support") +PCL_ADD_GRABBER_DEPENDENCY("DSSDK" "DepthSense SDK support") +PCL_ADD_GRABBER_DEPENDENCY("RSSDK" "RealSense SDK support") # metslib if (PKG_CONFIG_FOUND) @@ -328,20 +330,30 @@ if(WITH_QHULL) set(QHULL_USE_STATIC ON) endif(NOT PCL_SHARED_LIBS OR WIN32) find_package(Qhull) + if(QHULL_FOUND) + include_directories(${QHULL_INCLUDE_DIRS}) + endif(QHULL_FOUND) endif(WITH_QHULL) +# Cuda +option(WITH_CUDA "Build NVIDIA-CUDA support" TRUE) +if(WITH_CUDA) + include("${PCL_SOURCE_DIR}/cmake/pcl_find_cuda.cmake") +endif(WITH_CUDA) + option(WITH_QT "Build QT Front-End" TRUE) if(WITH_QT) - # Find Qt4 - find_package(Qt4) - if (QT4_FOUND) - include("${QT_USE_FILE}") - endif (QT4_FOUND) - - # Find QT5 - if(NOT QT4_FOUND) - include(cmake/pcl_find_qt5.cmake) - endif(NOT QT4_FOUND) + set(PCL_QT_VERSION 5 CACHE STRING "Which QT version to use") + if("${PCL_QT_VERSION}" STREQUAL "4") + find_package(Qt4) + if (QT4_FOUND) + include("${QT_USE_FILE}") + endif (QT4_FOUND) + elseif("${PCL_QT_VERSION}" STREQUAL "5") + include(cmake/pcl_find_qt5.cmake) + else() + message(SEND_ERROR "PCL_QT_VERSION must be 4 or 5") + endif() endif(WITH_QT) # Find VTK @@ -349,7 +361,12 @@ option(WITH_VTK "Build VTK-Visualizations" TRUE) if(WITH_VTK AND NOT ANDROID) find_package(VTK) if(VTK_FOUND) - message(STATUS "VTK_MAJOR_VERSION ${VTK_MAJOR_VERSION}") + if(NOT DEFINED VTK_RENDERING_BACKEND) + # On old VTK versions this variable does not exist. In this case it is + # safe to assume OpenGL backend + set(VTK_RENDERING_BACKEND "OpenGL") + endif() + message(STATUS "VTK_MAJOR_VERSION ${VTK_MAJOR_VERSION}, rendering backend: ${VTK_RENDERING_BACKEND}") if (PCL_SHARED_LIBS OR (NOT (PCL_SHARED_LIBS) AND NOT (VTK_BUILD_SHARED_LIBS))) set(VTK_FOUND TRUE) @@ -365,6 +382,11 @@ if(WITH_VTK AND NOT ANDROID) option (VTK_USE_COCOA "Use Cocoa for VTK render windows" ON) MARK_AS_ADVANCED (VTK_USE_COCOA) endif (APPLE) + if(${VTK_RENDERING_BACKEND} STREQUAL "OpenGL") + set(VTK_RENDERING_BACKEND_OPENGL_VERSION "1") + elseif(${VTK_RENDERING_BACKEND} STREQUAL "OpenGL2") + set(VTK_RENDERING_BACKEND_OPENGL_VERSION "2") + endif() set(HAVE_VTK ON) else () set(VTK_FOUND OFF) @@ -386,7 +408,13 @@ if(WITH_PCAP) endif(WITH_PCAP) # OpenGL and GLUT -include("${PCL_SOURCE_DIR}/cmake/pcl_find_gl.cmake") +option(WITH_OPENGL "Support for OpenGL" TRUE) +if(WITH_OPENGL) + include("${PCL_SOURCE_DIR}/cmake/pcl_find_gl.cmake") +endif(WITH_OPENGL) + +# Boost (required) +include("${PCL_SOURCE_DIR}/cmake/pcl_find_boost.cmake") ### ---[ Create the config.h file set(pcl_config_h_in "${CMAKE_CURRENT_SOURCE_DIR}/pcl_config.h.in") @@ -435,3 +463,4 @@ MAKE_DEP_GRAPH() ### ---[ Finish up PCL_WRITE_STATUS_REPORT() PCL_RESET_MAPS() + |