summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorJochen Sprickerhof <git@jochen.sprickerhof.de>2016-08-15 15:56:43 +0200
committerJochen Sprickerhof <git@jochen.sprickerhof.de>2016-08-15 15:56:43 +0200
commitcff328462e82392bce32c3c549a259a22c105ae6 (patch)
treef39ceee15156e5232d48ebb710cfa112ca6265a7 /CMakeLists.txt
parent8ee0cd905c894d8294ada94bf0adeacd1ea55b84 (diff)
Imported Upstream version 1.8.0
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt171
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()
+