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)