FindXercesC: Add imported targets and unit test

This commit is contained in:
Roger Leigh
2015-11-18 16:45:54 +00:00
committed by Brad King
parent e45e503f14
commit 5dcc833b28
6 changed files with 99 additions and 10 deletions

View File

@@ -4,23 +4,42 @@
#
# Find the Apache Xerces-C++ validating XML parser headers and libraries.
#
# This module reports information about the Xerces installation in
# several variables. General variables::
# Imported targets
# ^^^^^^^^^^^^^^^^
#
# XercesC_FOUND - true if the Xerces headers and libraries were found
# XercesC_VERSION - Xerces release version
# XercesC_INCLUDE_DIRS - the directory containing the Xerces headers
# XercesC_LIBRARIES - Xerces libraries to be linked
# This module defines the following :prop_tgt:`IMPORTED` targets:
#
# The following cache variables may also be set::
# ``XercesC::XercesC``
# The Xerces-C++ ``xerces-c`` library, if found.
#
# XercesC_INCLUDE_DIR - the directory containing the Xerces headers
# XercesC_LIBRARY - the Xerces library
# Result variables
# ^^^^^^^^^^^^^^^^
#
# This module will set the following variables in your project:
#
# ``XercesC_FOUND``
# true if the Xerces headers and libraries were found
# ``XercesC_VERSION``
# Xerces release version
# ``XercesC_INCLUDE_DIRS``
# the directory containing the Xerces headers
# ``XercesC_LIBRARIES``
# Xerces libraries to be linked
#
# Cache variables
# ^^^^^^^^^^^^^^^
#
# The following cache variables may also be set:
#
# ``XercesC_INCLUDE_DIR``
# the directory containing the Xerces headers
# ``XercesC_LIBRARY``
# the Xerces library
# Written by Roger Leigh <rleigh@codelibre.net>
#=============================================================================
# Copyright 2014 University of Dundee
# Copyright 2014-2015 University of Dundee
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
@@ -90,4 +109,32 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(XercesC
if(XercesC_FOUND)
set(XercesC_INCLUDE_DIRS "${XercesC_INCLUDE_DIR}")
set(XercesC_LIBRARIES "${XercesC_LIBRARY}")
# For header-only libraries
if(NOT TARGET XercesC::XercesC)
add_library(XercesC::XercesC UNKNOWN IMPORTED)
if(XercesC_INCLUDE_DIRS)
set_target_properties(XercesC::XercesC PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${XercesC_INCLUDE_DIRS}")
endif()
if(EXISTS "${XercesC_LIBRARY}")
set_target_properties(XercesC::XercesC PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
IMPORTED_LOCATION "${XercesC_LIBRARY}")
endif()
if(EXISTS "${XercesC_LIBRARY_DEBUG}")
set_property(TARGET XercesC::XercesC APPEND PROPERTY
IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(XercesC::XercesC PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
IMPORTED_LOCATION_DEBUG "${XercesC_LIBRARY_DEBUG}")
endif()
if(EXISTS "${XercesC_LIBRARY_RELEASE}")
set_property(TARGET XercesC::XercesC APPEND PROPERTY
IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(XercesC::XercesC PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
IMPORTED_LOCATION_RELEASE "${XercesC_LIBRARY_RELEASE}")
endif()
endif()
endif()