diff --git a/CMakeLists.txt b/CMakeLists.txt index 16928b74..ad2b2736 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -646,6 +646,25 @@ if(UHDR_ENABLE_HEIF) endif() if(LIBHEIF_FOUND) message(STATUS "Found libheif: ${LIBHEIF_LIBRARIES}") + if(TARGET libheif::heif) + get_target_property(_heif_interface_dirs libheif::heif INTERFACE_INCLUDE_DIRECTORIES) + if(_heif_interface_dirs) + list(PREPEND PRIVATE_INCLUDE_DIR ${_heif_interface_dirs}) + elseif(LIBHEIF_INCLUDE_DIRS) + list(PREPEND PRIVATE_INCLUDE_DIR ${LIBHEIF_INCLUDE_DIRS}) + endif() + # CMake 3.25+: prevent libheif from being classified as a system target so + # its headers are prioritized over any conflicting host/system headers, + # without stripping system include classification from other dependencies. + # Resolve ALIASED_TARGET if libheif::heif is an ALIAS (e.g. from Findlibheif.cmake). + get_target_property(_heif_real_target libheif::heif ALIASED_TARGET) + if(NOT _heif_real_target) + set(_heif_real_target libheif::heif) + endif() + set_target_properties(${_heif_real_target} PROPERTIES SYSTEM FALSE) + elseif(LIBHEIF_INCLUDE_DIRS) + list(PREPEND PRIVATE_INCLUDE_DIR ${LIBHEIF_INCLUDE_DIRS}) + endif() add_compile_options(-DUHDR_ENABLE_HEIF) list(APPEND PRIVATE_LINK_LIBS libheif::heif) else()