Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Guard add_library calls in Findtest-drive.cmake
Add if(NOT TARGET) guards around add_library calls to prevent conflicts when the target already exists (e.g., when using stdlib with FetchContent after PR #1033 which adds ALIAS targets automatically). This allows users to use the Find module pattern with libraries that already provide namespaced ALIAS targets.
  • Loading branch information
perazz committed Oct 6, 2025
commit cd795abe60df83aadf6b23c243536d4099b197e5
36 changes: 21 additions & 15 deletions config/cmake/Findtest-drive.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -88,17 +88,19 @@ foreach(method ${${_pkg}_FIND_METHOD})
if("${_pkg}_FOUND")
message(STATUS "Found ${_lib} via pkg-config")

add_library("${_lib}::${_lib}" INTERFACE IMPORTED)
target_link_libraries(
"${_lib}::${_lib}"
INTERFACE
"${${_pkg}_LINK_LIBRARIES}"
)
target_include_directories(
"${_lib}::${_lib}"
INTERFACE
"${${_pkg}_INCLUDE_DIRS}"
)
if(NOT TARGET "${_lib}::${_lib}")
add_library("${_lib}::${_lib}" INTERFACE IMPORTED)
target_link_libraries(
"${_lib}::${_lib}"
INTERFACE
"${${_pkg}_LINK_LIBRARIES}"
)
target_include_directories(
"${_lib}::${_lib}"
INTERFACE
"${${_pkg}_INCLUDE_DIRS}"
)
endif()

break()
endif()
Expand All @@ -118,8 +120,10 @@ foreach(method ${${_pkg}_FIND_METHOD})
"${${_pkg}_BINARY_DIR}"
)

add_library("${_lib}::${_lib}" INTERFACE IMPORTED)
target_link_libraries("${_lib}::${_lib}" INTERFACE "${_lib}")
if(NOT TARGET "${_lib}::${_lib}")
add_library("${_lib}::${_lib}" INTERFACE IMPORTED)
target_link_libraries("${_lib}::${_lib}" INTERFACE "${_lib}")
endif()

# We need the module directory in the subproject before we finish the configure stage
if(NOT EXISTS "${${_pkg}_BINARY_DIR}/include")
Expand All @@ -140,8 +144,10 @@ foreach(method ${${_pkg}_FIND_METHOD})
)
FetchContent_MakeAvailable("${_lib}")

add_library("${_lib}::${_lib}" INTERFACE IMPORTED)
target_link_libraries("${_lib}::${_lib}" INTERFACE "${_lib}")
if(NOT TARGET "${_lib}::${_lib}")
add_library("${_lib}::${_lib}" INTERFACE IMPORTED)
target_link_libraries("${_lib}::${_lib}" INTERFACE "${_lib}")
endif()

# We need the module directory in the subproject before we finish the configure stage
FetchContent_GetProperties("${_lib}" SOURCE_DIR "${_pkg}_SOURCE_DIR")
Expand Down