FindTIFF: Add imported targets and update documentation

- Add TIFF::TIFF imported target
- Document imported target
- Add testcase to test the standard variables and the imported
  target

Also:

- Add TIFF_INCLUDE_DIRS to match common practice
- Update documentation generally, including documenting
  TIFF_INCLUDE_DIRS
This commit is contained in:
Roger Leigh 2015-12-02 17:20:24 +00:00 committed by Brad King
parent 4ffeab0e3c
commit ebaca6290d
6 changed files with 104 additions and 10 deletions

View File

@ -0,0 +1,4 @@
FindTIFF-imported-targets
-------------------------
* The :module:`FindTIFF` module now provides imported targets.

View File

@ -2,24 +2,43 @@
# FindTIFF
# --------
#
# Find TIFF library
# Find the TIFF library (libtiff).
#
# Find the native TIFF includes and library This module defines
# Imported targets
# ^^^^^^^^^^^^^^^^
#
# ::
# This module defines the following :prop_tgt:`IMPORTED` targets:
#
# TIFF_INCLUDE_DIR, where to find tiff.h, etc.
# TIFF_LIBRARIES, libraries to link against to use TIFF.
# TIFF_FOUND, If false, do not try to use TIFF.
# ``TIFF::TIFF``
# The TIFF library, if found.
#
# also defined, but not for general use are
# Result variables
# ^^^^^^^^^^^^^^^^
#
# ::
# This module will set the following variables in your project:
#
# TIFF_LIBRARY, where to find the TIFF library.
# ``TIFF_FOUND``
# true if the TIFF headers and libraries were found
# ``TIFF_INCLUDE_DIR``
# the directory containing the TIFF headers
# ``TIFF_INCLUDE_DIRS``
# the directory containing the TIFF headers
# ``TIFF_LIBRARIES``
# TIFF libraries to be linked
#
# Cache variables
# ^^^^^^^^^^^^^^^
#
# The following cache variables may also be set:
#
# ``TIFF_INCLUDE_DIR``
# the directory containing the TIFF headers
# ``TIFF_LIBRARY``
# the path to the TIFF library
#=============================================================================
# Copyright 2002-2009 Kitware, Inc.
# Copyright 2015 University of Dundee
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
@ -65,7 +84,35 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(TIFF
VERSION_VAR TIFF_VERSION_STRING)
if(TIFF_FOUND)
set( TIFF_LIBRARIES ${TIFF_LIBRARY} )
set(TIFF_LIBRARIES ${TIFF_LIBRARY})
set(TIFF_INCLUDE_DIRS "${TIFF_INCLUDE_DIR}")
if(NOT TARGET TIFF::TIFF)
add_library(TIFF::TIFF UNKNOWN IMPORTED)
if(TIFF_INCLUDE_DIRS)
set_target_properties(TIFF::TIFF PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${TIFF_INCLUDE_DIRS}")
endif()
if(EXISTS "${TIFF_LIBRARY}")
set_target_properties(TIFF::TIFF PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
IMPORTED_LOCATION "${TIFF_LIBRARY}")
endif()
if(EXISTS "${TIFF_LIBRARY_DEBUG}")
set_property(TARGET TIFF::TIFF APPEND PROPERTY
IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(TIFF::TIFF PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
IMPORTED_LOCATION_DEBUG "${TIFF_LIBRARY_DEBUG}")
endif()
if(EXISTS "${TIFF_LIBRARY_RELEASE}")
set_property(TARGET TIFF::TIFF APPEND PROPERTY
IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(TIFF::TIFF PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
IMPORTED_LOCATION_RELEASE "${TIFF_LIBRARY_RELEASE}")
endif()
endif()
endif()
mark_as_advanced(TIFF_INCLUDE_DIR TIFF_LIBRARY)

View File

@ -1367,6 +1367,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
add_subdirectory(FindOpenSSL)
endif()
if(CMake_TEST_FindTIFF)
add_subdirectory(FindTIFF)
endif()
if(CMake_TEST_FindXercesC)
add_subdirectory(FindXercesC)
endif()

View File

@ -0,0 +1,10 @@
add_test(NAME FindTIFF.Test COMMAND
${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
--build-and-test
"${CMake_SOURCE_DIR}/Tests/FindTIFF/Test"
"${CMake_BINARY_DIR}/Tests/FindTIFF/Test"
${build_generator_args}
--build-project TestFindTIFF
--build-options ${build_options}
--test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
)

View File

@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 3.1)
project(TestFindTIFF C)
include(CTest)
# CMake does not actually provide FindTIFF publicly.
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../Source/Modules)
find_package(TIFF REQUIRED)
add_executable(test_xercesc_tgt main.c)
target_link_libraries(test_xercesc_tgt TIFF::TIFF)
add_test(NAME test_xercesc_tgt COMMAND test_xercesc_tgt)
add_executable(test_xercesc_var main.c)
target_include_directories(test_xercesc_var PRIVATE ${TIFF_INCLUDE_DIRS})
target_link_libraries(test_xercesc_var PRIVATE ${TIFF_LIBRARIES})
add_test(NAME test_xercesc_var COMMAND test_xercesc_var)

View File

@ -0,0 +1,12 @@
#include <assert.h>
#include <tiffio.h>
int main()
{
/* Without any TIFF file to open, test that the call fails as
expected. This tests that linking worked. */
TIFF *tiff = TIFFOpen("invalid.tiff", "r");
assert(!tiff);
return 0;
}