From b2083df231dd7c6cdbee3b7e60f457dab7ab44ef Mon Sep 17 00:00:00 2001 From: Alex Merry Date: Sun, 19 Jan 2014 13:06:01 +0000 Subject: [PATCH] Add an imported target to FindOpenEXR.cmake This simplifies using the find module. REVIEW: 115123 --- cmake/FindOpenEXR.cmake | 24 +++++++++++++++++++++--- src/imageformats/CMakeLists.txt | 4 +--- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/cmake/FindOpenEXR.cmake b/cmake/FindOpenEXR.cmake index abf305f..d69f449 100644 --- a/cmake/FindOpenEXR.cmake +++ b/cmake/FindOpenEXR.cmake @@ -6,13 +6,18 @@ # OpenEXR_LIBRARIES - Link to these to use OpenEXR # OpenEXR_INCLUDE_DIRS - Include directory for OpenEXR # OpenEXR_DEFINITIONS - Compiler flags required to link against OpenEXR +# OpenEXR::IlmImf - imported target to link against (instead of using the above variables) # # Copyright (c) 2006, Alexander Neundorf, -# Copyright (c) 2013, Alex Merry, +# Copyright (c) 2013-2014, Alex Merry, # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. +if(${CMAKE_VERSION} VERSION_LESS 2.8.12) + message(FATAL_ERROR "CMake 2.8.12 is required by FindOpenEXR.cmake") +endif() + # use pkg-config to get the directories and then use these values # in the FIND_PATH() and FIND_LIBRARY() calls find_package(PkgConfig) @@ -55,13 +60,16 @@ find_library(OpenEXR_ILMIMF_LIBRARY NAMES IlmImf ${PC_OpenEXR_LIBRARY_DIRS} ) -set(OpenEXR_LIBRARIES +set(_OpenEXR_deps ${OpenEXR_HALF_LIBRARY} ${OpenEXR_IEX_LIBRARY} ${OpenEXR_IMATH_LIBRARY} - ${OpenEXR_ILMIMF_LIBRARY} ${OpenEXR_ILMTHREAD_LIBRARY}) +set(OpenEXR_LIBRARIES + ${_OpenEXR_deps} + ${OpenEXR_ILMIMF_LIBRARY}) + if (OpenEXR_INCLUDE_DIR AND EXISTS "${OpenEXR_INCLUDE_DIR}/OpenEXRConfig.h") file(STRINGS "${OpenEXR_INCLUDE_DIR}/OpenEXRConfig.h" openexr_version_str REGEX "^#define[\t ]+OPENEXR_VERSION_STRING[\t ]+\"[^\"]*\"") @@ -101,3 +109,13 @@ mark_as_advanced( OpenEXR_IEX_LIBRARY OpenEXR_HALF_LIBRARY ) + +if(OpenEXR_FOUND AND NOT TARGET OpenEXR::IlmImf) + add_library(OpenEXR::IlmImf UNKNOWN IMPORTED) + set_target_properties(OpenEXR::IlmImf PROPERTIES + IMPORTED_LOCATION "${OpenEXR_ILMIMF_LIBRARY}" + INTERFACE_COMPILE_OPTIONS "${OpenEXR_DEFINITIONS}" + INTERFACE_INCLUDE_DIRECTORIES "${OpenEXR_INCLUDE_DIR}" + INTERFACE_LINK_LIBRARIES "${_OpenEXR_deps}" + ) +endif() diff --git a/src/imageformats/CMakeLists.txt b/src/imageformats/CMakeLists.txt index 320f3bb..7373a90 100644 --- a/src/imageformats/CMakeLists.txt +++ b/src/imageformats/CMakeLists.txt @@ -65,9 +65,7 @@ set_package_properties(OpenEXR PROPERTIES if(OpenEXR_FOUND) add_library(kimg_exr MODULE exr.cpp) - target_compile_options(kimg_exr PRIVATE ${OpenEXR_DEFINITIONS}) - target_include_directories(kimg_exr PRIVATE ${OpenEXR_INCLUDE_DIR}) - target_link_libraries(kimg_exr Qt5::Gui ${OpenEXR_LIBRARIES}) + target_link_libraries(kimg_exr Qt5::Gui OpenEXR::IlmImf) install(TARGETS kimg_exr DESTINATION ${QT_PLUGIN_INSTALL_DIR}/imageformats/) install(FILES exr.desktop DESTINATION ${SERVICES_INSTALL_DIR}/qimageioplugins/)