为什么子项目 CMAKE 没有考虑 fno-sanitize,为目标禁用消毒剂

Why fno-sanitize is not taken into account for a subproject CMAKE, disable sanitizer for a target

我正在开发一个包含多个目标的 CMake 项目。

我正在通过 CMake 激活 ADDRESS SANITIZER(ccmake . 并输入 ADDRESS_SANITIZER=ON)。它被正确激活,尽管我想在其中一个目标上将其停用。为此,我将 -fno-sanitize=all 添加到目标的编译器标志中,但未将其考虑在内。

有没有办法针对特定目标灭活消毒剂?有问题的目标不依赖于任何库或项目的任何其他目标。它只依赖于机器上安装的 LLVM 库。

子项目有自己的 CMakeList.txt 并作为子项目添加到主项目中。

-fno-sanitize=allset(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-sanitize=all"

设置

我使用 target_compile_options(target -fno-sanitize=all) 而不是 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-sanitize=all 解决了问题。