You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为VSCode中CMake项目配置Address Sanitizer构建变体

为CMake项目配置Address Sanitizer构建变体

问题背景

我在Visual Studio Code中使用CMake 3.18.4开发C++项目(编译器为GCC 10.2.1),想要添加GCC的Address Sanitizer构建变体。已配置.vscode/cmake-variants.yaml如下:

buildType:
  default: debug
  choices:
    debug:
      short: Debug
      long: Disable optimizations - include debug information
      buildType: Debug
    asan:
      short: Asan
      long: Instrument with Address Sanitizer
      buildType: Asan

VSCode执行的CMake配置命令如下:

[main] Configuring project: example 
[proc] Executing command: /usr/bin/cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Asan -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ -S/workspaces/example -B/workspaces/example/build -G Ninja

需要在CMakeLists.txt中添加何种生成器表达式,才能在选中Asan构建变体时,让编译和链接选项包含-fsanitize=address?

解决方案

使用针对Asan构建类型的生成器表达式,分别为编译和链接阶段添加Sanitizer选项:

add_compile_options($<$<CONFIG:Asan>:-fsanitize=address>)
add_link_options($<$<CONFIG:Asan>:-fsanitize=address>)

关键说明

  • 生成器表达式$<$<CONFIG:Asan>:-fsanitize=address>会在构建类型指定为Asan时,自动将-fsanitize=address参数注入到编译和链接流程中
  • 该配置仅对Asan构建变体生效,不会干扰Debug等其他构建类型的正常编译

内容的提问来源于stack exchange,提问作者PaulH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:35:05