FindCups: add imported target

This commit is contained in:
Patrick Gansterer 2019-02-05 06:51:20 +01:00 committed by Brad King
parent 062cfd991f
commit dd45f23b01
6 changed files with 85 additions and 9 deletions

View File

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

View File

@ -5,18 +5,38 @@
FindCups
--------
Try to find the Cups printing system
Find the CUPS printing system.
Once done this will define
Set CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE to TRUE if you need a version which
features this function (i.e. at least 1.1.19)
::
Imported targets
^^^^^^^^^^^^^^^^
CUPS_FOUND - system has Cups
CUPS_INCLUDE_DIR - the Cups include directory
CUPS_LIBRARIES - Libraries needed to use Cups
CUPS_VERSION_STRING - version of Cups found (since CMake 2.8.8)
Set CUPS_REQUIRE_IPP_DELETE_ATTRIBUTE to TRUE if you need a version which
features this function (i.e. at least 1.1.19)
This module defines :prop_tgt:`IMPORTED` target ``Cups::Cups``, if Cups has
been found.
Result variables
^^^^^^^^^^^^^^^^
This module will set the following variables in your project:
``CUPS_FOUND``
true if CUPS headers and libraries were found
``CUPS_INCLUDE_DIRS``
the directory containing the Cups headers
``CUPS_LIBRARIES``
the libraries to link against to use CUPS.
``CUPS_VERSION_STRING``
the version of CUPS found (since CMake 2.8.8)
Cache variables
^^^^^^^^^^^^^^^
The following cache variables may also be set:
``CUPS_INCLUDE_DIR``
the directory containing the Cups headers
#]=======================================================================]
find_path(CUPS_INCLUDE_DIR cups/cups.h )
@ -66,3 +86,13 @@ else ()
endif ()
mark_as_advanced(CUPS_INCLUDE_DIR CUPS_LIBRARIES)
if (CUPS_FOUND)
set(CUPS_INCLUDE_DIRS "${CUPS_INCLUDE_DIR}")
if (NOT TARGET Cups::Cups)
add_library(Cups::Cups INTERFACE IMPORTED)
set_target_properties(Cups::Cups PROPERTIES
INTERFACE_LINK_LIBRARIES "${CUPS_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${CUPS_INCLUDE_DIR}")
endif ()
endif ()

View File

@ -1413,6 +1413,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
add_subdirectory(FindCURL)
endif()
if(CMake_TEST_FindCups)
add_subdirectory(FindCups)
endif()
if(CMake_TEST_FindDoxygen)
add_subdirectory(FindDoxygen)
endif()

View File

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

View File

@ -0,0 +1,16 @@
cmake_minimum_required(VERSION 3.10)
project(TestFindCups C)
include(CTest)
find_package(Cups REQUIRED)
add_definitions(-DCMAKE_EXPECTED_CUPS_VERSION="${CUPS_VERSION_STRING}")
add_executable(test_tgt main.c)
target_link_libraries(test_tgt Cups::Cups)
add_test(NAME test_tgt COMMAND test_tgt)
add_executable(test_var main.c)
target_include_directories(test_var PRIVATE ${CUPS_INCLUDE_DIRS})
target_link_libraries(test_var PRIVATE ${CUPS_LIBRARIES})
add_test(NAME test_var COMMAND test_var)

View File

@ -0,0 +1,12 @@
#include <cups/cups.h>
int main()
{
int num_options = 0;
cups_option_t* options = NULL;
num_options = cupsAddOption(CUPS_COPIES, "1", num_options, &options);
cupsFreeOptions(num_options, options);
return 0;
}