Как я могу заставить Clang "scan-build" работать со SCons?
У меня есть проект, построенный с SCons, и я пытаюсь использовать Clang Static Analyzer для анализа кода. Однако при запуске
scan-build scons
Похоже, что SCons игнорирует настройки, введенные scan-build. Как я могу сделать эту работу?
Ответ 1
Как работает scan-build, он устанавливает различные переменные среды, которые обычно используются системами сборки (например, make) для управления процессом сборки. Некоторые из них:
CC - имя программы для использования в качестве компилятора C
CXX - имя программы для использования в качестве компилятора С++
CCC_* - различные переменные среды, которые управляют поведением статического анализатора Clang
SCons обычно очищает среду перед запуском сборки (это функция). Чтобы заставить эти переменные среды вступать в силу, сделайте что-то вроде этого в SConstruct:
env = Environment()
env["CC"] = os.getenv("CC") or env["CC"]
env["CXX"] = os.getenv("CXX") or env["CXX"]
env["ENV"].update(x for x in os.environ.items() if x[0].startswith("CCC_"))