From 78f166f8730c4da4ad21ba6218803f1a6552a95a Mon Sep 17 00:00:00 2001 From: Ben Morgan Date: Tue, 29 Aug 2017 18:24:08 +0100 Subject: FindEXPAT: Add imported target and documentation --- Modules/FindEXPAT.cmake | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/Modules/FindEXPAT.cmake b/Modules/FindEXPAT.cmake index 09963fc..39086e4 100644 --- a/Modules/FindEXPAT.cmake +++ b/Modules/FindEXPAT.cmake @@ -5,15 +5,28 @@ # FindEXPAT # --------- # -# Find expat +# Find the native Expat headers and library. # -# Find the native EXPAT headers and libraries. +# Imported Targets +# ^^^^^^^^^^^^^^^^ # -# :: +# This module defines the following :prop_tgt:`IMPORTED` targets: +# +# ``EXPAT::EXPAT`` +# The Expat ``expat`` library, if found. +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# This module will set the following variables in your project: +# +# ``EXPAT_INCLUDE_DIRS`` +# where to find expat.h, etc. +# ``EXPAT_LIBRARIES`` +# the libraries to link against to use Expat. +# ``EXPAT_FOUND`` +# true if the Expat headers and libraries were found. # -# EXPAT_INCLUDE_DIRS - where to find expat.h, etc. -# EXPAT_LIBRARIES - List of libraries when using expat. -# EXPAT_FOUND - True if expat found. find_package(PkgConfig QUIET) @@ -49,10 +62,18 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(EXPAT REQUIRED_VARS EXPAT_LIBRARY EXPAT_INCLUDE_DIR VERSION_VAR EXPAT_VERSION_STRING) -# Copy the results to the output variables. +# Copy the results to the output variables and target. if(EXPAT_FOUND) set(EXPAT_LIBRARIES ${EXPAT_LIBRARY}) set(EXPAT_INCLUDE_DIRS ${EXPAT_INCLUDE_DIR}) + + if(NOT TARGET EXPAT::EXPAT) + add_library(EXPAT::EXPAT UNKNOWN IMPORTED) + set_target_properties(EXPAT::EXPAT PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION "${EXPAT_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${EXPAT_INCLUDE_DIRS}") + endif() endif() mark_as_advanced(EXPAT_INCLUDE_DIR EXPAT_LIBRARY) -- cgit v0.12 From bfe51369a7f2dd29eb08f24b877fdd01b7534e5c Mon Sep 17 00:00:00 2001 From: Ben Morgan Date: Wed, 30 Aug 2017 12:18:07 +0100 Subject: FindEXPAT: Add unit test of target and variables --- Tests/CMakeLists.txt | 4 ++++ Tests/FindEXPAT/CMakeLists.txt | 10 ++++++++++ Tests/FindEXPAT/Test/CMakeLists.txt | 16 ++++++++++++++++ Tests/FindEXPAT/Test/main.c | 21 +++++++++++++++++++++ 4 files changed, 51 insertions(+) create mode 100644 Tests/FindEXPAT/CMakeLists.txt create mode 100644 Tests/FindEXPAT/Test/CMakeLists.txt create mode 100644 Tests/FindEXPAT/Test/main.c diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index f0e58ee..73918be 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -1427,6 +1427,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release add_subdirectory(FindDoxygen) endif() + if(CMake_TEST_FindEXPAT) + add_subdirectory(FindEXPAT) + endif() + if(CMake_TEST_FindGSL) add_subdirectory(FindGSL) endif() diff --git a/Tests/FindEXPAT/CMakeLists.txt b/Tests/FindEXPAT/CMakeLists.txt new file mode 100644 index 0000000..a74174a --- /dev/null +++ b/Tests/FindEXPAT/CMakeLists.txt @@ -0,0 +1,10 @@ +add_test(NAME FindEXPAT.Test COMMAND + ${CMAKE_CTEST_COMMAND} -C $ + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindEXPAT/Test" + "${CMake_BINARY_DIR}/Tests/FindEXPAT/Test" + ${build_generator_args} + --build-project TestFindEXPAT + --build-options ${build_options} + --test-command ${CMAKE_CTEST_COMMAND} -V -C $ + ) diff --git a/Tests/FindEXPAT/Test/CMakeLists.txt b/Tests/FindEXPAT/Test/CMakeLists.txt new file mode 100644 index 0000000..5681f74 --- /dev/null +++ b/Tests/FindEXPAT/Test/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.9) +project(TestFindEXPAT C) +include(CTest) + +find_package(EXPAT REQUIRED) + +add_definitions(-DCMAKE_EXPECTED_EXPAT_VERSION="${EXPAT_VERSION_STRING}") + +add_executable(testexpat_tgt main.c) +target_link_libraries(testexpat_tgt EXPAT::EXPAT) +add_test(NAME testexpat_tgt COMMAND testexpat_tgt) + +add_executable(testexpat_var main.c) +target_include_directories(testexpat_var PRIVATE ${EXPAT_INCLUDE_DIRS}) +target_link_libraries(testexpat_var PRIVATE ${EXPAT_LIBRARIES}) +add_test(NAME testexpat_var COMMAND testexpat_var) diff --git a/Tests/FindEXPAT/Test/main.c b/Tests/FindEXPAT/Test/main.c new file mode 100644 index 0000000..94ee3ef --- /dev/null +++ b/Tests/FindEXPAT/Test/main.c @@ -0,0 +1,21 @@ +#include +#include +#include +#include + +int main() +{ + XML_Expat_Version expat_version; + char expat_version_string[16]; + + expat_version = XML_ExpatVersionInfo(); + + snprintf(expat_version_string, 16, "%i.%i.%i", expat_version.major, + expat_version.minor, expat_version.micro); + + if (strcmp(expat_version_string, CMAKE_EXPECTED_EXPAT_VERSION) != 0) { + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; +} -- cgit v0.12 From 3a4f82e9f2edc9cf30c45019685d26658906e48e Mon Sep 17 00:00:00 2001 From: Ben Morgan Date: Fri, 1 Sep 2017 16:25:29 +0100 Subject: Help: Add notes for topic 'FindEXPAT-importedtargets' --- Help/release/dev/FindEXPAT-importedtargets.rst | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Help/release/dev/FindEXPAT-importedtargets.rst diff --git a/Help/release/dev/FindEXPAT-importedtargets.rst b/Help/release/dev/FindEXPAT-importedtargets.rst new file mode 100644 index 0000000..ea73551 --- /dev/null +++ b/Help/release/dev/FindEXPAT-importedtargets.rst @@ -0,0 +1,4 @@ +FindEXPAT-importedtargets +------------------------- + +* The :module:`FindEXPAT` module now provides imported targets. -- cgit v0.12