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()