From b276ef1f490e6ad53f880db8e12e5406538e1387 Mon Sep 17 00:00:00 2001 From: Benjamin Buch Date: Tue, 6 Jun 2023 15:32:45 +0200 Subject: [PATCH] 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. (cherry picked from commit d04eb78ab3892d3678c180437dd66379efa051fd) --- CMakeLists.txt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index db8f6aa1..3e410039 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -523,13 +523,15 @@ find_dependency(Threads) include(\"\${CMAKE_CURRENT_LIST_DIR}/liblzma-targets.cmake\") -# Be compatible with the spelling used by the FindLibLZMA module. This -# doesn't use ALIAS because it would make CMake resolve LibLZMA::LibLZMA -# to liblzma::liblzma instead of keeping the original spelling. Keeping -# the original spelling is important for good FindLibLZMA compatibility. -add_library(LibLZMA::LibLZMA INTERFACE IMPORTED) -set_target_properties(LibLZMA::LibLZMA PROPERTIES - INTERFACE_LINK_LIBRARIES liblzma::liblzma) +if(NOT TARGET LibLZMA::LibLZMA) + # Be compatible with the spelling used by the FindLibLZMA module. This + # doesn't use ALIAS because it would make CMake resolve LibLZMA::LibLZMA + # to liblzma::liblzma instead of keeping the original spelling. Keeping + # the original spelling is important for good FindLibLZMA compatibility. + add_library(LibLZMA::LibLZMA INTERFACE IMPORTED) + set_target_properties(LibLZMA::LibLZMA PROPERTIES + INTERFACE_LINK_LIBRARIES liblzma::liblzma) +endif() ") # Set CMAKE_INSTALL_LIBDIR and friends.