Использование скан-сборки Clang с scons и C ++ 11

Я добавил все к своему $PATH и я подправил свой SConstruct установить соответствующие переменные среды, согласно этим ответам [ 1, 2, 3 ]. Теперь, когда я бегу

scan-build --use-c++=`which clang++` scons

начинается сборка, и я вижу процесс, разветвленный scons является

/path/to/c++-analyzer ... -std=c++11 ...

Объектный файл успешно создается, но затем я получаю сообщение об ошибке:

could not find clang line

Эта ошибка возникает в c++-analyzer когда разветвленный процесс не содержит строку -cc1, Но если я проверю ps auxЯ ясно вижу

/path/to/clang -cc1 ...

Как правильно построить программу, но статический анализатор не работает, как это?


Для справки, если я запускаю вручную

scan-build clang++ <parameters from scons>

тогда сборка завершается успешно и отчет генерируется!

Я также могу «обмануть», добавив

env["ENV"]["PATH"] = os.environ["PATH"]

а затем работает

CXX="scan-build clang++" scons

Я просто не могу бежать scan-build на scons сам с неизмененным SConstruct,

13

Решение

Проблема в том, что Clang не находится на пути поиска в среда исполнения. Это объясняет, почему добавление строки env["ENV"]["PATH"] = os.environ["PATH"] решает проблему.

Бежать scan-build на неизмененном SConstruct можно поставить исполняемый файл clang (clang++ и, возможно, clang) на пути поиска, используемом средой выполнения, например, создав символическую ссылку из /usr/bin/clang++ на ваш /path/to/clang++ в линуксе

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]