cmake_minimum_required(VERSION 3.20)
project(dlt698_consumer LANGUAGES CXX)
# 与被测库共用版本来源，升级主版本后仍校验本次安装包的精确版本。
file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/../../../VERSION" DLT698_CONSUMER_VERSION LIMIT_COUNT 1)
find_package(dlt698 ${DLT698_CONSUMER_VERSION} EXACT CONFIG REQUIRED)
add_executable(consumer main.cpp)
target_link_libraries(consumer PRIVATE dlt698::dlt698)
if(TARGET dlt698::transport)
    target_compile_definitions(consumer PRIVATE HAVE_TRANSPORT)
endif()
if(TARGET dlt698::app)
    target_compile_definitions(consumer PRIVATE HAVE_APP)
    add_executable(app_consumer app.cpp)
    target_link_libraries(app_consumer PRIVATE dlt698::dlt698)
endif()
# 导出包只包含一个实际库目标；旧组件名称必须是它的别名。
foreach(component core session service transport app)
    if(TARGET dlt698::${component})
        get_target_property(component_target dlt698::${component} ALIASED_TARGET)
        if(NOT component_target STREQUAL "dlt698::dlt698")
            message(FATAL_ERROR "Component is not an alias of the unified library: ${component}")
        endif()
    endif()
endforeach()
if(WIN32)
    get_target_property(library_type dlt698::dlt698 TYPE)
    if(library_type STREQUAL "SHARED_LIBRARY")
        foreach(consumer_target consumer app_consumer)
            if(TARGET ${consumer_target})
                add_custom_command(TARGET ${consumer_target} POST_BUILD
                    COMMAND ${CMAKE_COMMAND} -E copy_if_different
                    $<TARGET_FILE:dlt698::dlt698> $<TARGET_FILE_DIR:${consumer_target}>)
            endif()
        endforeach()
    endif()
endif()
