error: current translation unit is compiled with the target feature '-fsanitize=address' but the AST

使用cmake生成Makefile 编译C++项目时出现报错:

error: current translation unit is compiled with the target feature '-fsanitize=address' but the AST file was not

一般情况下,这个是由于两次编译时的flags不一样导致的。
我这里首次执行cmake时,生成的flags.make中不带-fsanitize=address的参数。项目编译完成后再次执行cmake,这时它在我的flags.make中编译命令全部加上了-fsanitize=address、再次编译项目导致所有的文件都要重新编译,并且还会报出上面的错误。

解决方案是:

  1. 删除之前编译生成的stdafx.h.gch文件重新编译可以解决报错。

如果不想让每次cmake都导致项目需要重新编译。

  • 方法1. 首次执行cmake后直接再次cmake,确保以后再执行cmake生成的flags不会出再发生改变,再编译项目。
  • 方法2. 每次执行cmake时显示指定内存检测的宏,确保生成的flags每次都不会改变。

遗憾的是我一直未能探究出为什么前两次执行相同的cmake生成不同的结果。cmake版本从3.5切换到了3.15都是一样,而且这并不是一个必现的问题,在其他同事的机器上这个问题并没有出现,如果有小伙伴能够发现产生此问题的具体原因。请务必赐教!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值