为什么子项目 CMAKE 不考虑 fno-sanitize,请禁用目标的消毒器

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

本文关键字:目标 CMAKE 子项目 不考虑 fno-sanitize 为什么      更新时间:2023-10-16

我正在做一个有几个目标的CMake项目。

我正在通过CMake激活地址清理器(ccmake .并放入ADDRESS_SANITIZER=ON(。它已正确激活,尽管我想在其中一个目标上停用它。为此,我在目标的编译器标志中添加了-fno-sanitize=all,但没有考虑在内。

有没有办法使特定目标的消毒剂失活?所讨论的目标不依赖于项目的任何库或任何其他目标。它仅取决于计算机上安装的 LLVM 库。

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

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

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