cmake_minimum_required(VERSION 3.10)

# 项目信息
project(ExampleProject
    VERSION 1.0.0
    DESCRIPTION "A CMake example project"
    LANGUAGES CXX C
)

# 设置C++标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# 编译选项
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
    add_compile_options(-Wall -Wextra -Wpedantic)
endif()

# 包含目录
include_directories(include)

# 查找源文件
file(GLOB SOURCES src/*.cpp)
file(GLOB HEADERS include/*.hpp)

# 创建可执行文件
add_executable(example_app ${SOURCES} ${HEADERS})

# 链接库
find_package(Threads REQUIRED)
target_link_libraries(example_app PRIVATE Threads::Threads)

# 安装目标
install(TARGETS example_app
    RUNTIME DESTINATION bin
)

# 添加测试
enable_testing()
add_subdirectory(tests)

# 生成配置文件
configure_file(version.h.in version.h @ONLY)