1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
|
if(WIN32)
option(BUILD_all_in_one_installer "Build an all-in-one NSIS installer" OFF)
endif()
if(NOT BUILD_all_in_one_installer)
return()
endif()
# get root directory of each dependency libraries to be copied to PCL/3rdParty
get_filename_component(BOOST_ROOT "${Boost_INCLUDE_DIR}" PATH) # ../Boost/include/boost-x_x/ -> ../Boost/include/
get_filename_component(BOOST_ROOT "${BOOST_ROOT}" PATH) # ../Boost/include/ -> ../Boost/
get_filename_component(QHULL_ROOT "${Qhull_DIR}" PATH) # ../qhull/lib/cmake/Qhull/ -> ../qhull/lib/cmake
get_filename_component(QHULL_ROOT "${QHULL_ROOT}" PATH) # ../qhull/lib/cmake/ -> ../qhull/lib/
get_filename_component(QHULL_ROOT "${QHULL_ROOT}" PATH) # ../qhull/lib/ -> ../qhull/
get_filename_component(VTK_ROOT "${VTK_DIR}" PATH) # ../VTK/lib/cmake/vtk-x.x/ -> ../VTK/lib/cmake/
get_filename_component(VTK_ROOT "${VTK_ROOT}" PATH) # ../VTK/lib/cmake/ -> ../VTK/lib/
get_filename_component(VTK_ROOT "${VTK_ROOT}" PATH) # ../VTK/lib/ -> ../VTK/
set(PCL_3RDPARTY_COMPONENTS)
foreach(dep Boost Qhull FLANN VTK)
string(TOUPPER ${dep} DEP)
install(
DIRECTORY "${${DEP}_ROOT}/"
DESTINATION 3rdParty/${dep}
COMPONENT ${dep}
PATTERN "*/Uninstall.exe" EXCLUDE
)
list(APPEND PCL_3RDPARTY_COMPONENTS ${dep})
endforeach()
# Try to set EIGEN3_INCLUDE_DIR in case it is
# no longer exported by Eigen3 itself.
if (NOT EXISTS ${EIGEN3_INCLUDE_DIR})
if (EXISTS ${EIGEN3_INCLUDE_DIRS})
set(EIGEN3_INCLUDE_DIR ${EIGEN3_INCLUDE_DIRS})
else()
set(EIGEN3_INCLUDE_DIR "${Eigen3_DIR}/../../../include/eigen3/")
endif()
endif()
if(NOT EXISTS ${EIGEN3_INCLUDE_DIR})
message(FATAL_ERROR "EIGEN3_INCLUDE_DIR is not existing: ${EIGEN3_INCLUDE_DIR}")
endif()
# Try to find EIGEN3_COMMON_ROOT_PATH, which is meant to hold
# the first common root folder of Eigen3_DIR and EIGEN3_INCLUDE_DIR.
# E.g. Eigen3_DIR = /usr/local/share/eigen3/cmake/
# EIGEN3_INCLUDE_DIR = /usr/local/include/eigen3/
# => EIGEN3_COMMON_ROOT_PATH = /usr/local/
file(TO_CMAKE_PATH ${Eigen3_DIR} Eigen3_DIR)
file(TO_CMAKE_PATH ${EIGEN3_INCLUDE_DIR} EIGEN3_INCLUDE_DIR)
set(EIGEN3_INCLUDE_PATH_LOOP ${EIGEN3_INCLUDE_DIR})
set(PREVIOUS_EIGEN3_INCLUDE_PATH_LOOP "INVALID")
while (NOT ${PREVIOUS_EIGEN3_INCLUDE_PATH_LOOP} STREQUAL ${EIGEN3_INCLUDE_PATH_LOOP})
if (${Eigen3_DIR} MATCHES ${EIGEN3_INCLUDE_PATH_LOOP})
set(EIGEN3_COMMON_ROOT_PATH ${EIGEN3_INCLUDE_PATH_LOOP})
break()
endif()
set(PREVIOUS_EIGEN3_INCLUDE_PATH_LOOP ${EIGEN3_INCLUDE_PATH_LOOP})
get_filename_component(EIGEN3_INCLUDE_PATH_LOOP ${EIGEN3_INCLUDE_PATH_LOOP} DIRECTORY)
endwhile()
if(NOT EXISTS ${EIGEN3_COMMON_ROOT_PATH})
message(FATAL_ERROR "Could not copy Eigen3.")
endif()
# Install Eigen3 to 3rdParty directory
string(LENGTH ${EIGEN3_COMMON_ROOT_PATH} LENGTH_OF_EIGEN3_COMMON_ROOT_PATH)
string(SUBSTRING ${Eigen3_DIR} ${LENGTH_OF_EIGEN3_COMMON_ROOT_PATH} -1 DESTINATION_EIGEN3_DIR)
string(SUBSTRING ${EIGEN3_INCLUDE_DIR} ${LENGTH_OF_EIGEN3_COMMON_ROOT_PATH} -1 DESTINATION_EIGEN3_INCLUDE_DIR)
set(dep_Eigen3 Eigen3)
install(
DIRECTORY "${Eigen3_DIR}/"
DESTINATION 3rdParty/${dep_Eigen3}${DESTINATION_EIGEN3_DIR}
COMPONENT ${dep_Eigen3}
)
install(
DIRECTORY "${EIGEN3_INCLUDE_DIR}/"
DESTINATION 3rdParty/${dep_Eigen3}${DESTINATION_EIGEN3_INCLUDE_DIR}
COMPONENT ${dep_Eigen3}
)
list(APPEND PCL_3RDPARTY_COMPONENTS ${dep_Eigen3})
if(WITH_RSSDK2)
get_filename_component(RSSDK2_ROOT "${RSSDK2_INCLUDE_DIRS}" PATH)
install(
DIRECTORY "${RSSDK2_ROOT}/"
DESTINATION 3rdParty/librealsense2
COMPONENT rssdk2
PATTERN "*/Uninstall.exe" EXCLUDE
)
list(APPEND PCL_3RDPARTY_COMPONENTS rssdk2)
endif()
if(WITH_OPENNI)
if(CMAKE_CL_64)
set(OPENNI_PACKAGE "OpenNI-Win64-1.5.4-Dev.msi")
set(OPENNI_URL "http://sourceforge.net/projects/pointclouds/files/dependencies/${OPENNI_PACKAGE}")
set(OPENNI_MD5 c8f9cbe8447a16d32572a4e2c2d00af0)
set(OPENNI_SENSOR_PACKAGE "Sensor-Win-OpenSource64-5.1.0.msi")
set(OPENNI_SENSOR_URL "http://sourceforge.net/projects/pointclouds/files/dependencies/${OPENNI_SENSOR_PACKAGE}")
set(OPENNI_SENSOR_MD5 badb880116436870943b1b7c447dfa22)
else()
set(OPENNI_PACKAGE "OpenNI-Win32-1.5.4-Dev.msi")
set(OPENNI_URL "http://sourceforge.net/projects/pointclouds/files/dependencies/${OPENNI_PACKAGE}")
set(OPENNI_MD5 996d48f447b41a5501b7d22af27ab251)
set(OPENNI_SENSOR_PACKAGE "Sensor-Win-OpenSource32-5.1.0.msi")
set(OPENNI_SENSOR_URL "http://sourceforge.net/projects/pointclouds/files/dependencies/${OPENNI_SENSOR_PACKAGE}")
set(OPENNI_SENSOR_MD5 55da1f7541d7c9c98772bddf801c7e1c)
endif()
set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS " IntCmp $OpenNI_selected 0 noinstall_openni_packages\n")
file(DOWNLOAD ${OPENNI_URL} "${CMAKE_CURRENT_BINARY_DIR}/${OPENNI_PACKAGE}"
STATUS _openni_download_status LOG _openni_download_log
EXPECTED_MD5 ${OPENNI_MD5}
)
list(GET _openni_download_status 0 _error_code)
list(GET _openni_download_status 1 _error_message)
if(_error_code EQUAL 0)
install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/${OPENNI_PACKAGE}"
DESTINATION 3rdParty/OpenNI
COMPONENT OpenNI
)
list(APPEND PCL_3RDPARTY_COMPONENTS OpenNI)
string(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS "\n ExecWait 'msiexec /i \\\"$INSTDIR\\\\3rdParty\\\\OpenNI\\\\${OPENNI_PACKAGE}\\\" /quiet '")
else()
message("WARNING : Could not download ${OPENNI_URL}, error code : ${_error_code}, error message : ${_error_message}")
endif()
file(DOWNLOAD ${OPENNI_SENSOR_URL} "${CMAKE_CURRENT_BINARY_DIR}/${OPENNI_SENSOR_PACKAGE}"
STATUS _openni_download_status LOG _openni_download_log
EXPECTED_MD5 ${OPENNI_SENSOR_MD5}
)
list(GET _openni_download_status 0 _error_code)
list(GET _openni_download_status 1 _error_message)
if(_error_code EQUAL 0)
install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/${OPENNI_SENSOR_PACKAGE}"
DESTINATION 3rdParty/OpenNI
COMPONENT OpenNI
)
list(APPEND PCL_3RDPARTY_COMPONENTS OpenNI)
string(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS "\n ExecWait 'msiexec /i \\\"$INSTDIR\\\\3rdParty\\\\OpenNI\\\\${OPENNI_SENSOR_PACKAGE}\\\" /quiet '")
else()
message("WARNING : Could not download ${OPENNI_SENSOR_URL}, error code : ${_error_code}, error message : ${_error_message}")
endif()
list(REMOVE_DUPLICATES PCL_3RDPARTY_COMPONENTS)
string(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS "\n noinstall_openni_packages:\n")
endif()
if(WITH_OPENNI2)
if(CMAKE_CL_64)
set(OPENNI2_PACKAGE "OpenNI-Windows-x64-2.2.msi")
set(OPENNI2_ZIP "OpenNI-Windows-x64-2.2.0.33.zip")
set(OPENNI2_URL "http://com.occipital.openni.s3.amazonaws.com/${OPENNI2_ZIP}")
set(OPENNI2_MD5 d187f1dd0b091e27cebd03216b1bfff5)
else()
set(OPENNI2_PACKAGE "OpenNI-Windows-x86-2.2.msi")
set(OPENNI2_ZIP "OpenNI-Windows-x86-2.2.0.33.zip")
set(OPENNI2_URL "http://com.occipital.openni.s3.amazonaws.com/${OPENNI2_ZIP}")
set(OPENNI2_MD5 59b38e23d951d59917a35f7f89efaf22)
endif()
set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS " IntCmp $OpenNI2_selected 0 noinstall_openni2_packages\n")
file(DOWNLOAD ${OPENNI2_URL} "${CMAKE_CURRENT_BINARY_DIR}/${OPENNI2_ZIP}"
STATUS _openni2_download_status LOG _openni2_download_log
EXPECTED_MD5 ${OPENNI2_MD5}
)
list(GET _openni2_download_status 0 _error_code)
list(GET _openni2_download_status 1 _error_message)
if(_error_code EQUAL 0)
execute_process(
COMMAND ${CMAKE_COMMAND} -E tar -xzf ${OPENNI2_ZIP}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
RESULT_VARIABLE _error_code
ERROR_VARIABLE _error_message
)
if(_error_code EQUAL 0)
install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/${OPENNI2_PACKAGE}"
DESTINATION 3rdParty/OpenNI2
COMPONENT OpenNI2
)
list(APPEND PCL_3RDPARTY_COMPONENTS OpenNI2)
string(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS "\n ExecWait 'msiexec /i \\\"$INSTDIR\\\\3rdParty\\\\OpenNI2\\\\${OPENNI2_PACKAGE}\\\" /quiet '")
else()
message("WARNING : Could not unzip ${OPENNI2_ZIP}, error code : ${_error_code}, error message : ${_error_message}")
endif()
else()
message("WARNING : Could not download ${OPENNI2_ZIP_URL}, error code : ${_error_code}, error message : ${_error_message}")
endif()
list(REMOVE_DUPLICATES PCL_3RDPARTY_COMPONENTS)
string(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS "\n noinstall_openni2_packages:\n")
endif()
|