first init
This commit is contained in:
110
array/1binary search/704Binary search/CMakeLists.txt
Normal file
110
array/1binary search/704Binary search/CMakeLists.txt
Normal file
@@ -0,0 +1,110 @@
|
||||
# 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(
|
||||
"$<$<CONFIG:Release>:-O3>" # Release模式优化
|
||||
"$<$<CONFIG:Debug>:-g3>"
|
||||
"$<$<CONFIG:Debug>:-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
|
||||
# <vector>
|
||||
# <string>
|
||||
# <memory>
|
||||
# ${PROJECT_SOURCE_DIR}/include/pch.h
|
||||
# )
|
||||
|
||||
# 13. 生成配置文件
|
||||
# 13.1 导出头文件路径
|
||||
target_include_directories(${PROJECT_NAME}
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
|
||||
# 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)
|
||||
Reference in New Issue
Block a user