# 1. 指定CMake最低版本要求 cmake_minimum_required(VERSION 3.10) # 2. 设置项目信息 project( 704BinarySearch # 项目名称 VERSION 1.0.0 # 项目版本 DESCRIPTION "Simple C++ Project" LANGUAGES CXX # 支持的语言 ) # 3. 设置C++标准和编译特性 set(CMAKE_CXX_STANDARD 17) # 使用C++17标准 set(CMAKE_CXX_STANDARD_REQUIRED ON) # 必须支持指定标准 set(CMAKE_CXX_EXTENSIONS OFF) # 禁用编译器特有扩展 # 4. 配置构建类型和编译选项 if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) # 默认构建类型为Release endif() # 公共编译选项 # 修改后 - 分开添加选项 add_compile_options( "$<$:-O3>" # Release模式优化 "$<$:-g3>" "$<$:-O0>" ) # 平台特定选项 if(MSVC) add_compile_options(/W4 /WX) # MSVC: 警告等级4,视警告为错误 else() add_compile_options(-Wall -Wextra -Wpedantic -Werror) # GCC/Clang: 严格警告 endif() # 5. 查找依赖包 # find_package(Boost 1.70 COMPONENTS filesystem system) # 6. 包含目录设置 include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/include # 项目头文件目录 ) # 7. 源文件收集 file(GLOB_RECURSE SOURCES "src/*.cpp") # 递归收集源文件 file(GLOB_RECURSE HEADERS "include/*.h") # 头文件 # 8. 创建目标 # 可执行文件目标 add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS}) # 9. 链接依赖库 if(Boost_FOUND) target_link_libraries(${PROJECT_NAME} PRIVATE Boost::filesystem Boost::system ) endif() # 10. 安装规则 install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib ) install(DIRECTORY include/ DESTINATION include) # 11. 测试支持 enable_testing() # 12. 附加功能 # 12.1 Windows资源文件 if(WIN32 AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/app.rc) target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/app.rc) endif() # # 12.2 预编译头文件 # target_precompile_headers(${PROJECT_NAME} PRIVATE # # # # ${PROJECT_SOURCE_DIR}/include/pch.h # ) # 13. 生成配置文件 # 13.1 导出头文件路径 target_include_directories(${PROJECT_NAME} PUBLIC $ $ ) # 13.2 生成版本信息 configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Version.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/Version.hpp ) # 14. 自定义目标 add_custom_target(run COMMAND ${PROJECT_NAME} DEPENDS ${PROJECT_NAME} COMMENT "Running ${PROJECT_NAME}..." ) # 15. 包管理器集成 include(CPack)