include(GenerateExportHeader) add_library(sharedlib SHARED sharedlib.cpp) generate_export_header(sharedlib) add_library(shareddependlib SHARED shareddependlib.cpp) generate_export_header(shareddependlib) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON) target_link_libraries(sharedlib PUBLIC shareddependlib) target_include_directories(shareddependlib PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/shareddependlib") target_compile_definitions(shareddependlib INTERFACE $<1:SHAREDDEPENDLIB_DEFINE>) target_include_directories(sharedlib PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/sharedlib") target_compile_definitions(shareddependlib INTERFACE $<1:SHAREDLIB_DEFINE>) add_library(shared_iface INTERFACE) target_link_libraries(shared_iface INTERFACE sharedlib) add_library(imported::iface INTERFACE IMPORTED GLOBAL)