# example/CMakeLists.txt - CANFD 示例程序子模块
# 可以独立编译,也可以作为子模块被父项目编译

# 检查是否作为子模块编译
if(NOT TARGET CANFD_shared)
    # 独立编译模式:需要自己配置库和依赖
    cmake_minimum_required(VERSION 3.20)
    project(CANFD_Example C)
    
    # 设置C标准
    set(CMAKE_C_STANDARD 11)
    set(CMAKE_C_STANDARD_REQUIRED ON)
    set(CMAKE_C_EXTENSIONS OFF)
    
    # 添加POSIX特性支持
    add_definitions(-D_GNU_SOURCE)
    add_definitions(-D_POSIX_C_SOURCE=200809L)
    
    # 设置输出目录(可执行文件输出到 example 目录)
    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build)
    
    # 查找库文件(假设库在 ../output 目录)
    find_library(CANFD_LIB NAMES CANFD libCANFD PATHS ${CMAKE_SOURCE_DIR}/../output/lib NO_DEFAULT_PATH)
    
    if(NOT CANFD_LIB)
        message(FATAL_ERROR "CANFD library not found in ../output directory. Please build the library first.")
    endif()
    
    # 生成测试程序
    add_executable(test_canfd main.c)
    target_link_libraries(test_canfd ${CANFD_LIB} pthread)
    target_include_directories(test_canfd PRIVATE ${CMAKE_SOURCE_DIR}/../output/include)
else()
    # 子模块编译模式:使用父项目已定义的目标
    add_executable(test_canfd main.c)
    target_link_libraries(test_canfd CANFD_shared)
    target_include_directories(test_canfd PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
endif()
