From 1c73b1a624d848f4bb6a86d7811f19098e9728a4 Mon Sep 17 00:00:00 2001 From: Julien Malik <julien.malik@c-s.fr> Date: Tue, 13 Mar 2012 06:44:55 +0100 Subject: [PATCH] ENH: support external tinyXML --- CMake/FindTinyXML.cmake | 26 ++++++++++++++++++++++++++ CMake/ImportTinyXML.cmake | 10 ++++++++++ CMake/otbIncludeDirectories.cmake | 19 +++++++++++++++++-- CMakeLists.txt | 1 + Code/Fuzzy/CMakeLists.txt | 2 +- Code/IO/CMakeLists.txt | 2 +- Code/ObjectDetection/CMakeLists.txt | 2 +- Testing/Utilities/CMakeLists.txt | 2 +- Utilities/CMakeLists.txt | 8 ++++++-- Utilities/tinyXMLlib/CMakeLists.txt | 14 ++++++++------ 10 files changed, 72 insertions(+), 14 deletions(-) create mode 100644 CMake/FindTinyXML.cmake create mode 100644 CMake/ImportTinyXML.cmake diff --git a/CMake/FindTinyXML.cmake b/CMake/FindTinyXML.cmake new file mode 100644 index 0000000000..e9bf948562 --- /dev/null +++ b/CMake/FindTinyXML.cmake @@ -0,0 +1,26 @@ +# - Find TinyXML +# Find the native TinyXML includes and library +# +# TINYXML_FOUND - True if TinyXML found. +# TINYXML_INCLUDE_DIR - where to find tinyxml.h, etc. +# TINYXML_LIBRARIES - List of libraries when using TinyXML. +# + +IF( TINYXML_INCLUDE_DIR ) + # Already in cache, be silent + SET( TinyXML_FIND_QUIETLY TRUE ) +ENDIF( TINYXML_INCLUDE_DIR ) + +FIND_PATH( TINYXML_INCLUDE_DIR tinyxml.h + PATH_SUFFIXES tinyxml ) + +FIND_LIBRARY( TINYXML_LIBRARIES + NAMES tinyxml + PATH_SUFFIXES tinyxml ) + +# handle the QUIETLY and REQUIRED arguments and set TINYXML_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE( FindPackageHandleStandardArgs ) +FIND_PACKAGE_HANDLE_STANDARD_ARGS( TinyXML DEFAULT_MSG TINYXML_INCLUDE_DIR TINYXML_LIBRARIES ) + +MARK_AS_ADVANCED( TINYXML_INCLUDE_DIR TINYXML_LIBRARIES ) diff --git a/CMake/ImportTinyXML.cmake b/CMake/ImportTinyXML.cmake new file mode 100644 index 0000000000..8cdae4a9b4 --- /dev/null +++ b/CMake/ImportTinyXML.cmake @@ -0,0 +1,10 @@ +MESSAGE(STATUS "Importing TinyXML...") +FIND_PACKAGE(TinyXML) + +IF(TINYXML_FOUND) + OPTION(OTB_USE_EXTERNAL_TINYXML "Use external TinyXML library." ON) +ELSE(TINYXML_FOUND) + OPTION(OTB_USE_EXTERNAL_TINYXML "Use external TinyXML library." OFF) + SET(TINYXML_LIBRARIES otbtinyXML) +ENDIF(TINYXML_FOUND) +MARK_AS_ADVANCED(OTB_USE_EXTERNAL_TINYXML) diff --git a/CMake/otbIncludeDirectories.cmake b/CMake/otbIncludeDirectories.cmake index 0961d6a7b5..bcc9aa813f 100644 --- a/CMake/otbIncludeDirectories.cmake +++ b/CMake/otbIncludeDirectories.cmake @@ -64,7 +64,6 @@ SET(OTB_INCLUDE_DIRS_BUILD_TREE ${OTB_INCLUDE_DIRS_BUILD_TREE} ${OTB_SOURCE_DIR}/Utilities/otbossimplugins/ossim ${OTB_SOURCE_DIR}/Utilities/InsightJournal ${OTB_SOURCE_DIR}/Utilities/otb6S - ${OTB_SOURCE_DIR}/Utilities/tinyXMLlib # ${OTB_SOURCE_DIR}/Utilities/otbgalib ${OTB_SOURCE_DIR}/Utilities/otbkml/src ${OTB_SOURCE_DIR}/Utilities/otbkml/third_party @@ -110,6 +109,14 @@ IF(OTB_USE_SIFTFAST) ${OTB_SOURCE_DIR}/Utilities/otbsiftfast) ENDIF(OTB_USE_SIFTFAST) +IF(OTB_USE_EXTERNAL_TINYXML) + SET(OTB_INCLUDE_DIRS_BUILD_TREE ${OTB_INCLUDE_DIRS_BUILD_TREE} + ${TINYXML_INCLUDE_DIRS}) +ELSEIF(OTB_USE_EXTERNAL_TINYXML) + SET(OTB_INCLUDE_DIRS_BUILD_TREE ${OTB_INCLUDE_DIRS_BUILD_TREE} + ${OTB_SOURCE_DIR}/Utilities/tinyXMLlib) +ENDIF(OTB_USE_EXTERNAL_TINYXML) + #----------------------------------------------------------------------------- # Include directories from the ossim build tree SET(OTB_INCLUDE_DIRS_BUILD_TREE ${OTB_INCLUDE_DIRS_BUILD_TREE} @@ -320,7 +327,6 @@ SET(OTB_INCLUDE_RELATIVE_DIRS ${OTB_INCLUDE_RELATIVE_DIRS} Utilities/otbsvm Utilities/InsightJournal Utilities/otb6S - Utilities/tinyXMLlib # Utilities/otbgalib Utilities/otbkml Utilities/otbkml/src @@ -384,6 +390,15 @@ ELSE(OTB_USE_EXTERNAL_FLTK) Utilities/FLTK) ENDIF(OTB_USE_EXTERNAL_FLTK) +#For TinyXML header file +IF(OTB_USE_EXTERNAL_TINYXML) + SET(OTB_INCLUDE_ABSOLUE_DIRS ${OTB_INCLUDE_ABSOLUE_DIRS} + ${TINYXML_INCLUDE_DIRS}) +ELSE(OTB_USE_EXTERNAL_TINYXML) + SET(OTB_INCLUDE_RELATIVE_DIRS ${OTB_INCLUDE_RELATIVE_DIRS} + Utilities/tinyXMLlib) +ENDIF(OTB_USE_EXTERNAL_TINYXML) + #For GLU header file SET(OTB_INCLUDE_ABSOLUE_DIRS ${OTB_INCLUDE_ABSOLUE_DIRS} ${OTB_GLU_INCLUDE_PATH} ) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ed9f55bd6..94c12f66d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -230,6 +230,7 @@ INCLUDE(ImportOssim) INCLUDE(ImportQt4) INCLUDE(ImportGetText) INCLUDE(ImportSiftFast) +INCLUDE(ImportTinyXML) INCLUDE_DIRECTORIES ( diff --git a/Code/Fuzzy/CMakeLists.txt b/Code/Fuzzy/CMakeLists.txt index 800a234a4c..9d7c197986 100644 --- a/Code/Fuzzy/CMakeLists.txt +++ b/Code/Fuzzy/CMakeLists.txt @@ -3,7 +3,7 @@ FILE(GLOB OTBFuzzy_SRCS "*.cxx" ) ADD_LIBRARY(OTBFuzzy ${OTBFuzzy_SRCS}) -TARGET_LINK_LIBRARIES (OTBFuzzy OTBCommon tinyXML) +TARGET_LINK_LIBRARIES (OTBFuzzy OTBCommon ${TINYXML_LIBRARIES}) IF(OTB_LIBRARY_PROPERTIES) SET_TARGET_PROPERTIES(OTBFuzzy PROPERTIES ${OTB_LIBRARY_PROPERTIES}) ENDIF(OTB_LIBRARY_PROPERTIES) diff --git a/Code/IO/CMakeLists.txt b/Code/IO/CMakeLists.txt index 9b5f0f1e6a..6b215aeaf7 100644 --- a/Code/IO/CMakeLists.txt +++ b/Code/IO/CMakeLists.txt @@ -39,7 +39,7 @@ ADD_LIBRARY(OTBIO ${OTBIO_SRCS}) # LINK_INTERFACE_LIBRARIES "" # ) TARGET_LINK_LIBRARIES (OTBIO ${TIFF_LIBRARY} ${GEOTIFF_LIBRARY} ${GDAL_LIBRARY} ${OGR_LIBRARY} ${JPEG_LIBRARY} ${OPENTHREADS_LIBRARY} OTBCommon OTBBasicFilters OTBCurlAdapters) -TARGET_LINK_LIBRARIES (OTBIO ITKIO ITKCommon otbkml tinyXML) +TARGET_LINK_LIBRARIES (OTBIO ITKIO ITKCommon otbkml ${TINYXML_LIBRARIES}) IF (OTB_USE_LIBLAS) IF(OTB_USE_EXTERNAL_LIBLAS) diff --git a/Code/ObjectDetection/CMakeLists.txt b/Code/ObjectDetection/CMakeLists.txt index 0ec0fb4252..0103a2f06d 100644 --- a/Code/ObjectDetection/CMakeLists.txt +++ b/Code/ObjectDetection/CMakeLists.txt @@ -2,7 +2,7 @@ FILE(GLOB OTBObjectDetection_SRCS "*.cxx" ) ADD_LIBRARY(OTBObjectDetection ${OTBObjectDetection_SRCS}) -TARGET_LINK_LIBRARIES (OTBObjectDetection OTBCommon) +TARGET_LINK_LIBRARIES (OTBObjectDetection OTBCommon ${TINYXML_LIBRARIES}) IF(OTB_LIBRARY_PROPERTIES) SET_TARGET_PROPERTIES(OTBObjectDetection PROPERTIES ${OTB_LIBRARY_PROPERTIES}) diff --git a/Testing/Utilities/CMakeLists.txt b/Testing/Utilities/CMakeLists.txt index d94d025ab4..444db639f8 100644 --- a/Testing/Utilities/CMakeLists.txt +++ b/Testing/Utilities/CMakeLists.txt @@ -399,7 +399,7 @@ IF(NOT BUILD_SHARED_LIBS) ENDIF(NOT BUILD_SHARED_LIBS) ADD_EXECUTABLE(otbUtilitiesTests otbUtilitiesTests.cxx ${UtilitiesTests_SRCS}) -TARGET_LINK_LIBRARIES(otbUtilitiesTests OTBIO OTBCommon OTBTesting otbsvm otb6S tinyXML otbkml) +TARGET_LINK_LIBRARIES(otbUtilitiesTests OTBIO OTBCommon OTBTesting otbsvm otb6S ${TINYXML_LIBRARIES} otbkml) IF(OTB_USE_SIFTFAST) TARGET_LINK_LIBRARIES(otbUtilitiesTests otbsiftfast) diff --git a/Utilities/CMakeLists.txt b/Utilities/CMakeLists.txt index 3e025b98f4..00b40cd496 100644 --- a/Utilities/CMakeLists.txt +++ b/Utilities/CMakeLists.txt @@ -68,8 +68,12 @@ MESSAGE(STATUS "Configuring otbossimplugins...") ADD_SUBDIRECTORY(otbossimplugins) MESSAGE(STATUS "Configuring otb6S...") ADD_SUBDIRECTORY(otb6S) -MESSAGE(STATUS "Configuring tinyXMLlib...") -ADD_SUBDIRECTORY(tinyXMLlib) + +IF(NOT OTB_USE_EXTERNAL_TINYXML) + MESSAGE(STATUS "Configuring tinyXMLlib...") + ADD_SUBDIRECTORY(tinyXMLlib) +ENDIF(NOT OTB_USE_EXTERNAL_TINYXML) + MESSAGE(STATUS "Configuring otbkml...") ADD_SUBDIRECTORY(otbkml) MESSAGE(STATUS "Configuring otbedison...") diff --git a/Utilities/tinyXMLlib/CMakeLists.txt b/Utilities/tinyXMLlib/CMakeLists.txt index e1de4a684d..93a4988a06 100644 --- a/Utilities/tinyXMLlib/CMakeLists.txt +++ b/Utilities/tinyXMLlib/CMakeLists.txt @@ -2,14 +2,13 @@ PROJECT(tinyXMLlib) FILE(GLOB tinyXMLlib_SRCS "*.cpp") FILE(GLOB tinyXMLlib_HDRS "*.h") -ADD_LIBRARY(tinyXML ${tinyXMLlib_SRCS}) -TARGET_LINK_LIBRARIES(tinyXML) +ADD_LIBRARY(otbtinyXML ${tinyXMLlib_SRCS}) IF(OTB_LIBRARY_PROPERTIES) - SET_TARGET_PROPERTIES(tinyXML PROPERTIES ${OTB_LIBRARY_PROPERTIES}) + SET_TARGET_PROPERTIES(otbtinyXML PROPERTIES ${OTB_LIBRARY_PROPERTIES}) ENDIF(OTB_LIBRARY_PROPERTIES) IF(NOT OTB_INSTALL_NO_LIBRARIES) - INSTALL(TARGETS tinyXML + INSTALL(TARGETS otbtinyXML RUNTIME DESTINATION ${OTB_INSTALL_BIN_DIR_CM24} COMPONENT RuntimeLibraries LIBRARY DESTINATION ${OTB_INSTALL_LIB_DIR_CM24} COMPONENT RuntimeLibraries ARCHIVE DESTINATION ${OTB_INSTALL_LIB_DIR_CM24} COMPONENT Development) @@ -17,6 +16,9 @@ ENDIF(NOT OTB_INSTALL_NO_LIBRARIES) IF(NOT OTB_INSTALL_NO_DEVELOPMENT) INSTALL(FILES ${tinyXMLlib_HDRS} - DESTINATION ${OTB_INSTALL_INCLUDE_DIR_CM24}/Utilities/tinyXMLlib - COMPONENT Development) + DESTINATION ${OTB_INSTALL_INCLUDE_DIR_CM24}/Utilities/tinyXMLlib + COMPONENT Development) ENDIF(NOT OTB_INSTALL_NO_DEVELOPMENT) + +SET(TINYXML_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) +SET(TINYXML_LIBRARIES otbtinyXML) -- GitLab