Clang scan-build идентифицирует компилятор CXX как GNU 9.1.0, а не clang - PullRequest
0 голосов
/ 24 октября 2019

Я пытался использовать scan-build с cmake. После scan-build make после scan-build cmake. Но при использовании scan-build он идентифицирует компилятор CXX как GNU 9.1.0. Но если мы не используем scan-build, то правильно идентифицируем CXX как clang. Из-за того, что компилятор CXX определен как GNU 9.1.0, проверки на наличие некоторых диагностических флагов в clang (например, Wunreachable_code_break, Werror_range_loop_analysis) завершаются неудачно.

Вывод при использовании сканирования-сборки:

scan-build: Using '../clang/9.0.0/bin/clang-9' for static analysis
-- The CXX compiler identification is GNU 9.1.0
-- Check for working CXX compiler: ../clang/9.0.0/libexec/c++-analyzer
-- Check for working CXX compiler: ../clang/9.0.0/libexec/c++-analyzer -- works

Вывод без сканирования-сборки:

-- The CXX compiler identification is Clang 9.0.0
-- Check for working CXX compiler: ../clang/9.0.0/bin/clang++
-- Check for working CXX compiler: ../clang/9.0.0/bin/clang++ -- works

Как убедиться, что scan-build должен идентифицировать clang как компилятор CXX?

1 Ответ

1 голос
/ 24 октября 2019

Чтение Руководства

Скрипт использует простую эвристику, чтобы определить, какой компилятор следует использовать (по умолчанию это clang на Darwin и gcc на других платформах).

...

scan-build предоставляет опции --use-cc и --use-c ++ для жесткого соединения, которое компилятор scan-build должен использовать для сборки вашегоcode.

Вы захотите изменить конфигурацию CMake так, чтобы вызов scan-build был похож на ...

scan-build --use-c++ ${CMAKE_CXX_COMPILER} ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...