一、全局编译选项设置
1. 通用编译选项
# 设置全局编译选项(影响所有目标)
add_compile_options(-Wall -Wextra -Wpedantic)
2. 编译器特定选项
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
add_compile_options(-march=native -fopenmp)
elseif(MSVC)
add_compile_options(/W4 /permissive-)
endif()
二、目标级编译选项(推荐)
1. 为特定目标设置选项
add_executable(my_app main.cpp)
target_compile_options(my_app PRIVATE
$<$<COMPILE_LANGUAGE:CXX>:-std=c++17> # C++标准
$<$<CXX_COMPILER_ID:GNU>:-fno-exceptions> # 仅GCC生效
)
2. 不同构建类型的选项
target_compile_options(my_app PRIVATE
$<$<CONFIG:Debug>:-g3 -O0>