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
|
#.rst:
# FindQhull
# --------
#
# Try to find QHULL library and headers. This module supports both old released versions
# of QHULL ≤ 7.3.2 and newer development versions that ship with a modern config file,
# but its limited to only the reentrant version of Qhull.
#
# PCL_QHULL_REQUIRED_TYPE can be used to select if you want static or shared libraries, but it defaults to "don't care".
#
# IMPORTED Targets
# ^^^^^^^^^^^^^^^^
#
# This module defines the :prop_tgt:`IMPORTED` targets:
#
# ``QHULL::QHULL``
# Defined if the system has QHULL.
#
# Result Variables
# ^^^^^^^^^^^^^^^^
#
# This module sets the following variables:
#
# ::
#
# QHULL_FOUND True in case QHULL is found, otherwise false
#
# Example usage
# ^^^^^^^^^^^^^
#
# ::
#
# find_package(QHULL REQUIRED)
#
# add_executable(foo foo.cc)
# target_link_libraries(foo QHULL::QHULL)
#
# Skip if QHULL::QHULL is already defined
if(TARGET QHULL::QHULL)
return()
endif()
# Try to locate QHull using modern cmake config (available on latest Qhull version).
find_package(Qhull CONFIG QUIET)
if(Qhull_FOUND)
unset(Qhull_FOUND)
set(QHULL_FOUND ON)
set(HAVE_QHULL ON)
message(STATUS "Found Qhull version ${Qhull_VERSION}")
# Create interface library that effectively becomes an alias for the appropriate (static/dynamic) imported QHULL target
add_library(QHULL::QHULL INTERFACE IMPORTED)
if(TARGET Qhull::qhull_r AND TARGET Qhull::qhullstatic_r)
if(PCL_QHULL_REQUIRED_TYPE MATCHES "SHARED")
set_property(TARGET QHULL::QHULL APPEND PROPERTY INTERFACE_LINK_LIBRARIES Qhull::qhull_r)
set(QHULL_LIBRARY_TYPE SHARED)
elseif(PCL_QHULL_REQUIRED_TYPE MATCHES "STATIC")
set_property(TARGET QHULL::QHULL APPEND PROPERTY INTERFACE_LINK_LIBRARIES Qhull::qhullstatic_r)
set(QHULL_LIBRARY_TYPE STATIC)
else()
if(PCL_SHARED_LIBS)
set_property(TARGET QHULL::QHULL APPEND PROPERTY INTERFACE_LINK_LIBRARIES Qhull::qhull_r)
set(QHULL_LIBRARY_TYPE SHARED)
else()
set_property(TARGET QHULL::QHULL APPEND PROPERTY INTERFACE_LINK_LIBRARIES Qhull::qhullstatic_r)
set(QHULL_LIBRARY_TYPE STATIC)
endif()
endif()
elseif(TARGET Qhull::qhullstatic_r)
set_property(TARGET QHULL::QHULL APPEND PROPERTY INTERFACE_LINK_LIBRARIES Qhull::qhullstatic_r)
set(QHULL_LIBRARY_TYPE STATIC)
else()
set_property(TARGET QHULL::QHULL APPEND PROPERTY INTERFACE_LINK_LIBRARIES Qhull::qhull_r)
set(QHULL_LIBRARY_TYPE SHARED)
endif()
return()
endif()
find_file(QHULL_HEADER
NAMES libqhull_r.h
HINTS "${QHULL_ROOT}" "$ENV{QHULL_ROOT}" "${QHULL_INCLUDE_DIR}"
PATHS "$ENV{PROGRAMFILES}/QHull" "$ENV{PROGRAMW6432}/QHull"
PATH_SUFFIXES qhull_r src/libqhull_r libqhull_r include)
set(QHULL_HEADER "${QHULL_HEADER}" CACHE INTERNAL "QHull header" FORCE )
if(QHULL_HEADER)
get_filename_component(qhull_header ${QHULL_HEADER} NAME_WE)
if("${qhull_header}" STREQUAL "qhull_r")
get_filename_component(QHULL_INCLUDE_DIR ${QHULL_HEADER} PATH)
elseif("${qhull_header}" STREQUAL "libqhull_r")
get_filename_component(QHULL_INCLUDE_DIR ${QHULL_HEADER} PATH)
get_filename_component(QHULL_INCLUDE_DIR ${QHULL_INCLUDE_DIR} PATH)
endif()
else()
set(QHULL_INCLUDE_DIR "QHULL_INCLUDE_DIR-NOTFOUND")
endif()
find_library(QHULL_LIBRARY_SHARED
NAMES qhull_r qhull
HINTS "${QHULL_ROOT}" "$ENV{QHULL_ROOT}"
PATHS "$ENV{PROGRAMFILES}/QHull" "$ENV{PROGRAMW6432}/QHull"
PATH_SUFFIXES project build bin lib)
find_library(QHULL_LIBRARY_DEBUG
NAMES qhull_rd qhull_d
HINTS "${QHULL_ROOT}" "$ENV{QHULL_ROOT}"
PATHS "$ENV{PROGRAMFILES}/QHull" "$ENV{PROGRAMW6432}/QHull"
PATH_SUFFIXES project build bin lib debug/lib)
find_library(QHULL_LIBRARY_STATIC
NAMES qhullstatic_r
HINTS "${QHULL_ROOT}" "$ENV{QHULL_ROOT}"
PATHS "$ENV{PROGRAMFILES}/QHull" "$ENV{PROGRAMW6432}/QHull"
PATH_SUFFIXES project build bin lib)
find_library(QHULL_LIBRARY_DEBUG_STATIC
NAMES qhullstatic_rd
HINTS "${QHULL_ROOT}" "$ENV{QHULL_ROOT}"
PATHS "$ENV{PROGRAMFILES}/QHull" "$ENV{PROGRAMW6432}/QHull"
PATH_SUFFIXES project build bin lib debug/lib)
if(QHULL_LIBRARY_SHARED AND QHULL_LIBRARY_STATIC)
if(PCL_QHULL_REQUIRED_TYPE MATCHES "SHARED")
set(QHULL_LIBRARY_TYPE SHARED)
set(QHULL_LIBRARY ${QHULL_LIBRARY_SHARED})
elseif(PCL_QHULL_REQUIRED_TYPE MATCHES "STATIC")
set(QHULL_LIBRARY_TYPE STATIC)
set(QHULL_LIBRARY ${QHULL_LIBRARY_STATIC})
else()
if(PCL_SHARED_LIBS)
set(QHULL_LIBRARY_TYPE SHARED)
set(QHULL_LIBRARY ${QHULL_LIBRARY_SHARED})
else()
set(QHULL_LIBRARY_TYPE STATIC)
set(QHULL_LIBRARY ${QHULL_LIBRARY_STATIC})
endif()
endif()
elseif(QHULL_LIBRARY_STATIC)
set(QHULL_LIBRARY_TYPE STATIC)
set(QHULL_LIBRARY ${QHULL_LIBRARY_STATIC})
elseif(QHULL_LIBRARY_SHARED)
set(QHULL_LIBRARY_TYPE SHARED)
set(QHULL_LIBRARY ${QHULL_LIBRARY_SHARED})
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Qhull
FOUND_VAR QHULL_FOUND
REQUIRED_VARS QHULL_LIBRARY QHULL_INCLUDE_DIR
)
if(QHULL_FOUND)
set(HAVE_QHULL ON)
add_library(QHULL::QHULL ${QHULL_LIBRARY_TYPE} IMPORTED)
set_target_properties(QHULL::QHULL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${QHULL_INCLUDE_DIR}")
set_property(TARGET QHULL::QHULL APPEND PROPERTY IMPORTED_CONFIGURATIONS "RELEASE")
set_target_properties(QHULL::QHULL PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES "CXX")
set_target_properties(QHULL::QHULL PROPERTIES INTERFACE_COMPILE_DEFINITIONS "qh_QHpointer")
if(MSVC)
set_target_properties(QHULL::QHULL PROPERTIES INTERFACE_COMPILE_DEFINITIONS "qh_QHpointer_dllimport")
endif()
if(WIN32 AND NOT (PCL_QHULL_REQUIRED_TYPE MATCHES "STATIC"))
set_target_properties(QHULL::QHULL PROPERTIES IMPORTED_IMPLIB_RELEASE "${QHULL_LIBRARY}")
else()
set_target_properties(QHULL::QHULL PROPERTIES IMPORTED_LOCATION_RELEASE "${QHULL_LIBRARY}")
endif()
if(QHULL_LIBRARY_DEBUG)
set_property(TARGET QHULL::QHULL APPEND PROPERTY IMPORTED_CONFIGURATIONS "DEBUG")
if(WIN32 AND NOT (PCL_QHULL_REQUIRED_TYPE MATCHES "STATIC"))
set_target_properties(QHULL::QHULL PROPERTIES IMPORTED_IMPLIB_DEBUG "${QHULL_LIBRARY_DEBUG}")
else()
set_target_properties(QHULL::QHULL PROPERTIES IMPORTED_LOCATION_DEBUG "${QHULL_LIBRARY_DEBUG}")
endif()
endif()
message(STATUS "QHULL found (include: ${QHULL_INCLUDE_DIR}, lib: ${QHULL_LIBRARY})")
endif()
|