CMake: Protects against double find_package

Boost iostream uses `find_package` in quiet mode and then again uses
`find_package` with required. This second call triggers a
`add_library cannot create imported target "LibLZMA::LibLZMA"
because another target with the same name already exists.`

This can simply be fixed by skipping the alias part on secondary
`find_package` runs.
This commit is contained in:
Benjamin Buch 2023-06-06 15:32:45 +02:00 committed by Lasse Collin
parent 12ea1fb297
commit d04eb78ab3
1 changed files with 9 additions and 7 deletions

View File

@ -889,6 +889,7 @@ write_basic_package_version_file(
set(LZMA_CONFIG_CONTENTS set(LZMA_CONFIG_CONTENTS
"include(\"\${CMAKE_CURRENT_LIST_DIR}/liblzma-targets.cmake\") "include(\"\${CMAKE_CURRENT_LIST_DIR}/liblzma-targets.cmake\")
if(NOT TARGET LibLZMA::LibLZMA)
# Be compatible with the spelling used by the FindLibLZMA module. This # Be compatible with the spelling used by the FindLibLZMA module. This
# doesn't use ALIAS because it would make CMake resolve LibLZMA::LibLZMA # doesn't use ALIAS because it would make CMake resolve LibLZMA::LibLZMA
# to liblzma::liblzma instead of keeping the original spelling. Keeping # to liblzma::liblzma instead of keeping the original spelling. Keeping
@ -896,6 +897,7 @@ set(LZMA_CONFIG_CONTENTS
add_library(LibLZMA::LibLZMA INTERFACE IMPORTED) add_library(LibLZMA::LibLZMA INTERFACE IMPORTED)
set_target_properties(LibLZMA::LibLZMA PROPERTIES set_target_properties(LibLZMA::LibLZMA PROPERTIES
INTERFACE_LINK_LIBRARIES liblzma::liblzma) INTERFACE_LINK_LIBRARIES liblzma::liblzma)
endif()
") ")
if(ENABLE_THREADS STREQUAL "posix") if(ENABLE_THREADS STREQUAL "posix")