如何在Conan2中使用编译器Sanitizer(以Address Sanitizer为例)
在Conan 2中配置Address Sanitizer(Emscripten/WASM环境)
问题背景
尝试在Conan 2中为Emscripten/WASM环境配置Address Sanitizer,但参考Conan 1的方案完全失效。先后尝试两个配置文件均失败:
第一个配置文件:
include(default) [settings] arch=wasm os=Emscripten compiler.sanitizer=Address [tool_requires] *: emsdk/3.1.44 [env] CFLAGS=-fsanitize=address CXXFLAGS=-fsanitize=address LDFLAGS=-fsanitize=address
第二个配置文件:
[compiler_flags] sanitizer=Address
Conan提示env或compiler_flags是未识别的段。
解决方案
Conan 2对配置文件结构做了大幅调整,移除了Conan 1中直接用env设置编译标志的方式,也不存在compiler_flags段。正确做法是通过[conf]段的tools.build系列配置项传递编译/链接参数:
正确的配置文件示例
include(default) [settings] arch=wasm os=Emscripten [tool_requires] *: emsdk/3.1.44 [conf] tools.build:cflags=["-fsanitize=address"] tools.build:cxxflags=["-fsanitize=address"] tools.build:ldflags=["-fsanitize=address"]
关键说明
compiler.sanitizer=Address这个设置项在Emscripten的Conan配置中可能未做映射,直接通过tools.build系列参数传递-fsanitize=address更可靠- 确认使用的emsdk版本支持Address Sanitizer,3.1.44版本完全支持该特性
- 也可以通过命令行临时指定配置,无需修改配置文件:
conan install . -s os=Emscripten -s arch=wasm -t emsdk/3.1.44 -c tools.build:cflags="-fsanitize=address" -c tools.build:cxxflags="-fsanitize=address" -c tools.build:ldflags="-fsanitize=address"
内容的提问来源于stack exchange,提问作者Rodrigo
相关产品推荐
相关产品推荐

