2025-10-10 07:54:19 +08:00
|
|
|
# ============================================
|
|
|
|
|
# 编译器配置模块
|
|
|
|
|
# ============================================
|
|
|
|
|
# 功能:设置C++标准、编译选项、字符编码等
|
|
|
|
|
|
|
|
|
|
# 设置C++标准
|
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
|
|
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
|
|
|
|
|
|
# 编译选项配置函数
|
|
|
|
|
# 用法:setup_compiler_options(目标名称)
|
|
|
|
|
function(setup_compiler_options TARGET_NAME)
|
|
|
|
|
if(MSVC)
|
|
|
|
|
# Visual Studio: 启用所有警告 + UTF-8编码支持
|
|
|
|
|
target_compile_options(${TARGET_NAME} PRIVATE /W4 /utf-8)
|
2025-10-10 09:17:42 +08:00
|
|
|
# 添加并行编译支持
|
|
|
|
|
add_compile_options(/MP)
|
2025-10-10 07:54:19 +08:00
|
|
|
# 不要弹出控制台窗口
|
2025-10-10 09:17:42 +08:00
|
|
|
target_link_options(${TARGET_NAME} PRIVATE "/SUBSYSTEM:WINDOWS" "/ENTRY:mainCRTStartup")
|
2025-10-10 07:54:19 +08:00
|
|
|
elseif(WIN32 AND (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang"))
|
|
|
|
|
# MinGW/Clang on Windows: 设置UTF-8编码
|
|
|
|
|
target_compile_options(${TARGET_NAME} PRIVATE -Wall -Wextra -Wpedantic -finput-charset=utf-8 -fexec-charset=utf-8)
|
|
|
|
|
else()
|
|
|
|
|
# Linux/macOS: 标准警告选项
|
|
|
|
|
target_compile_options(${TARGET_NAME} PRIVATE -Wall -Wextra -Wpedantic)
|
|
|
|
|
endif()
|
|
|
|
|
endfunction()
|
|
|
|
|
|