gpt4 book ai didi

带有 cca​​che 的 Xcode 地址清理器

转载 作者:行者123 更新时间:2023-12-04 17:52:01 26 4
gpt4 key购买 nike

我正在尝试在 Xcode 中使用 Address Sanitizer,但我也在使用 ccache 来加速我的构建。为此,我设置了 CC Xcode 项目级别的标志指向我存储在 ~/projects/support/cmake/ccache-clang 的脚本.脚本读取

#!/bin/sh
if type -p /usr/local/bin/ccache >/dev/null 2>&1; then
export CCACHE_CPP2=true
exec /usr/local/bin/ccache "${DEVELOPER_DIR}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" "$@"
else
exec "${DEVELOPER_DIR}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" "$@"
fi

所以达到了预期的效果(如果安装在开发者的系统上,则使用 ccache)。这运行良好。

现在,当我们为给定方案打开 Address Sanitizer 时,问题就来了。构建成功完成,但是当我们尝试运行时,我们终于看到了这个错误:
Error: Check dependencies

Could not determine version of clang to find its Address Sanitizer library: ~/projects/support/cmake/ccache-clang

也许这是由于 Xcode 中的一些 hacky 实现,它试图解析编译器的路径以确定版本?

想知道如何修改我的脚本以允许 Address Sanitizer 工作。当前的解决方法是删除覆盖的 CC当我们需要做 sanitizer 工作时标记。

使用 Xcode 8.3.1

最佳答案

直接链接 Asan 库,而不是选中方案中的复选框。
链接器和编译器标志应包含以下内容。

-fsanitize=address -fno-omit-frame-pointer
如果找不到该库,请找到asan动态库的路径,通常在
${CMAKE_LINKER}/../../lib/clang/version/lib/darwin/libclang_rt.asan_osx_dynamic.dylib
并将其添加到链接器标志中。
  • What's the proper way to enable AddressSanitizer in CMake that works in Xcode
  • 关于带有 cca​​che 的 Xcode 地址清理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43901804/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com