diff --git a/CMake/UseOTB.cmake.in b/CMake/UseOTB.cmake.in index e28429baa57d1d341c8e149d1e3668507d88b031..494d3811a3dc6f8febffe17f1ef0da3d9d2c23b3 100644 --- a/CMake/UseOTB.cmake.in +++ b/CMake/UseOTB.cmake.in @@ -23,6 +23,18 @@ INCLUDE_DIRECTORIES(${OTB_INCLUDE_DIRS}) # Add link directories needed to use OTB. LINK_DIRECTORIES(${OTB_LIBRARY_DIRS}) + +# Path to additional CMake modules +# save the current value +SET(BACKUP_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}) +# add the OTB specific CMake modules dir BEFORE the current CMAKE_MODULE_PATH +SET(CMAKE_MODULE_PATH + ${OTB_CMAKEMODULE_DIRS} + ${CMAKE_MODULE_PATH}) +# at the end of this file, CMAKE_MODULE_PATH will be set back to its original value +# this way, the OTb specific FindXXX.cmake are only used in this file +# and do not pollute the user space + # Load settings for the system VXL with which OTB was built, if any. IF(OTB_USE_SYSTEM_VXL) # If VXL has already been found, make sure it is the one used to @@ -94,45 +106,30 @@ IF(USE_FFTWF OR USE_FFTWD) ENDIF(USE_FFTWF OR USE_FFTWD) IF(OTB_USE_EXTERNAL_EXPAT) - FIND_PACKAGE(EXPAT) - IF(EXPAT_FOUND) - # Control expat compatibility - INCLUDE_DIRECTORIES(${EXPAT_INCLUDE_DIR}) - ELSE(EXPAT_FOUND) - MESSAGE(FATAL_ERROR - "Cannot use OTB project without EXPAT library. Please set EXPAT_DIR or rebuild OTB and set OTB_USE_EXTERNAL_EXPAT OFF to use INTERNAL EXPAT set on OTB/Utilities repository.") - ENDIF(EXPAT_FOUND) + FIND_PACKAGE(EXPAT REQUIRED) + INCLUDE_DIRECTORIES(${EXPAT_INCLUDE_DIR}) ELSE(OTB_USE_EXTERNAL_EXPAT) ADD_DEFINITIONS(-DOTB_USE_INTERNAL_EXPAT) ENDIF(OTB_USE_EXTERNAL_EXPAT) IF(OTB_USE_EXTERNAL_BOOST) - FIND_PACKAGE(Boost) + FIND_PACKAGE(Boost REQUIRED) INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR}) # needed for automatic linking on msvc platform LINK_DIRECTORIES( ${Boost_LIBRARY_DIRS} ) ENDIF(OTB_USE_EXTERNAL_BOOST) -IF(OTB_USE_EXTERNAL_GDAL) - FIND_PACKAGE(GDAL) - IF (NOT GDAL_FOUND) - FIND_PATH(GDAL_INCLUDE_DIR gdal.h $ENV{GDAL_INCLUDE_DIR} /usr/include/gdal) - FIND_LIBRARY(GDAL_LIBRARY NAMES gdal PATHS /usr/lib/gdal) - ENDIF(NOT GDAL_FOUND) - INCLUDE_DIRECTORIES(${GDAL_INCLUDE_DIR}) +IF(OTB_USE_EXTERNAL_GDAL) + FIND_PACKAGE(GDAL REQUIRED) + INCLUDE_DIRECTORIES(${GDAL_INCLUDE_DIRS}) ENDIF(OTB_USE_EXTERNAL_GDAL) - if(OTB_USE_EXTERNAL_FLTK) - FIND_PACKAGE(FLTK) - IF(NOT FLTK_FOUND) - MESSAGE(FATAL_ERROR - "OTB was built with an external FLTK library, but I could not find it. Please set FLTK_DIR to the path containing FLTKConfig.cmake.") - ENDIF(NOT FLTK_FOUND) - + FIND_PACKAGE(FLTK REQUIRED) + INCLUDE_DIRECTORIES(${FLTK_INCLUDE_DIRS}) LINK_DIRECTORIES(${FLTK_LIBRARY_DIRS}) else(OTB_USE_EXTERNAL_FLTK) FIND_PROGRAM(FLTK_FLUID_EXECUTABLE fluid PATHS @@ -144,21 +141,30 @@ else(OTB_USE_EXTERNAL_FLTK) NO_SYSTEM_PATH) endif(OTB_USE_EXTERNAL_FLTK) -IF(OTB_USE_LIBLAS) -IF(OTB_USE_EXTERNAL_LIBLAS) - FIND_PATH(LIBLAS_INCLUDE_DIR liblas.hpp) - IF(LIBLAS_INCLUDE_DIR) - INCLUDE_DIRECTORIES(${LIBLAS_INCLUDE_DIR}) - ENDIF(LIBLAS_INCLUDE_DIR) +IF(OTB_USE_LIBLAS AND OTB_USE_EXTERNAL_LIBLAS) + FIND_PACKAGE(LibLAS REQUIRED) + INCLUDE_DIRECTORIES(${LIBLAS_INCLUDE_DIRS}) +ENDIF(OTB_USE_LIBLAS AND OTB_USE_EXTERNAL_LIBLAS) + +IF(OTB_USE_PQXX) + FIND_PACKAGE(Pqxx REQUIRED) + INCLUDE_DIRECTORIES(${PQXX_INCLUDE_DIRS}) +ENDIF(OTB_USE_PQXX) + +IF(OTB_USE_EXTERNAL_LIBKML) + FIND_PACKAGE(LibKML) + INCLUDE_DIRECTORIES(${LIBKML_INCLUDE_DIRS}) +ENDIF(OTB_USE_EXTERNAL_LIBKML) - FIND_LIBRARY(LIBLAS_LIBRARY NAMES liblas_c liblas) +IF(OTB_USE_EXTERNAL_TINYXML) + FIND_PACKAGE(TinyXML) + INCLUDE_DIRECTORIES(${TINYXML_INCLUDE_DIRS}) +ENDIF(OTB_USE_EXTERNAL_TINYXML) - IF (NOT LIBLAS_LIBRARY) - MESSAGE(FATAL_ERROR - "Cannot find Liblas library. Please set LIBLAS_LIBRARY") - ENDIF (NOT LIBLAS_LIBRARY) -ENDIF(OTB_USE_EXTERNAL_LIBLAS) -ENDIF(OTB_USE_LIBLAS) +IF(OTB_USE_EXTERNAL_MUPARSER) + FIND_PACKAGE(MuParser) + INCLUDE_DIRECTORIES(${MUPARSER_INCLUDE_DIR}) +ENDIF(OTB_USE_EXTERNAL_MUPARSER) IF(OTB_USE_MAPNIK) FIND_PATH(MAPNIK_INCLUDE_DIR mapnik/map.hpp PATHS) @@ -225,30 +231,14 @@ IF(OTB_USE_MAPNIK) # Add compiler option ADD_DEFINITIONS(-DOTB_USE_MAPNIK) - INCLUDE_DIRECTORIES(${MAPNIK_INCLUDE_DIR} ${ICUUC_INCLUDE_DIR} ${LTDL_INCLUDE_DIR} ${FREETYPE2_INCLUDE_DIR}) + INCLUDE_DIRECTORIES(${MAPNIK_INCLUDE_DIR} + ${ICUUC_INCLUDE_DIR} + ${LTDL_INCLUDE_DIR} + ${FREETYPE2_INCLUDE_DIR}) ENDIF(OTB_USE_MAPNIK) -IF(OTB_USE_PQXX) - - FIND_PATH(PQXX_INCLUDE_DIR pqxx/pqxx PATHS) - MARK_AS_ADVANCED(PQXX_INCLUDE_DIR) - IF (NOT PQXX_INCLUDE_DIR) - MESSAGE(FATAL_ERROR - "Cannot find PQXX include directory. Please set PQXX_INCLUDE_DIR or SET OTB_USE_PQXX OFF.") - ENDIF (NOT PQXX_INCLUDE_DIR) - - FIND_LIBRARY(PQXX_LIBRARY pqxx ) - MARK_AS_ADVANCED(PQXX_LIBRARY) - IF (NOT PQXX_LIBRARY) - MESSAGE(FATAL_ERROR - "Cannot find PQXX library. Please set PQXX_LIBRARY or SET OTB_USE_PQXX OFF.") - ENDIF (NOT PQXX_LIBRARY) - - INCLUDE_DIRECTORIES(${PQXX_INCLUDE_DIR}) - -ENDIF(OTB_USE_PQXX) - INCLUDE(${OTB_LIBRARY_DIRS}/OTBParseArguments.cmake) INCLUDE(${OTB_LIBRARY_DIRS}/OTBWrapperMacros.cmake) +SET(CMAKE_MODULE_PATH ${BACKUP_CMAKE_MODULE_PATH})