fishbowl/engine/cmake/util.cmake
2026-05-29 07:58:06 +09:00

27 lines
705 B
CMake

function(fb_add_dep TARGET_NAME DEP_NAME)
get_target_property(TARGET_TYPE ${TARGET_NAME} TYPE)
if(TARGET_TYPE STREQUAL "INTERFACE_LIBRARY")
set(LINK_SCOPE "INTERFACE")
else()
set(LINK_SCOPE "PRIVATE")
endif()
if(TARGET deps::${DEP_NAME})
target_link_libraries(${TARGET_NAME} ${LINK_SCOPE} deps::${DEP_NAME})
return()
endif()
set(TOP_CMAKE "${CMAKE_CURRENT_SOURCE_DIR}/")
while(NOT EXISTS "${TOP_CMAKE}")
set(TOP_CMAKE "${TOP_CMAKE}../")
endwhile()
include("${TOP_CMAKE}cmake/deps/${DEP_NAME}.cmake")
if(NOT TARGET deps::${DEP_NAME})
add_library(deps::${DEP_NAME} ALIAS ${DEP_NAME})
endif()
target_link_libraries(${TARGET_NAME} ${LINK_SCOPE} deps::${DEP_NAME})
endfunction()