2016-09-14 2 views
1

Я хочу запустить статический анализатор clang на разных целевых объектах. Ниже приведено описание файла makefile:Как запустить статический анализатор clang на другой цели с помощью scan-build

CC = <path to clang folder>/build/bin/clang 
. 
. 
.  
src/%.o: ../src/%.c 
    ${CC} --target=powerpc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "[email protected]" "$<" 

Я пытаюсь скомпилировать powerpc. Это командная строка и вывод:

>> <path_to_llvm_folder>/llvm/tools/clang/tools/scan-build/scan-build --use-analyzer=<path_to_llvm_folder>/build/bin/clang make 
scan-build: Using '<path_to_llvm_folder>/build/bin/clang' for static analysis 
Building file: ../src/testing.c 
Invoking: GCC C Compiler 
<path to clang folder>/llvm/tools/clang/tools/scan-build/ccc-analyzer --target=powerpc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/testing.d" -MT"src/testing.o" -o "src/testing.o" "../src/testing.c" 
cc1: warning: command line option "-ftarget=powerpc" is valid for Java but not for C 

Обратите внимание, что хотя Makefile звонит лязг - Я получаю Gcc предупреждение ... Так как я использую лязг для компиляции кода и для статического анализа для различных целевых ?

ответ

0

нашел решение. Я думаю, что есть ошибка в сценарии ссса-анализаторе в следующих парах:

my %CompilerLinkerOptionMap = (
    '-Wwrite-strings' => 0, 
    '-ftrapv-handler' => 1, # specifically call out separated -f flag 
    '-mios-simulator-version-min' => 0, # This really has 1 argument, but always has '=' 
    '-isysroot' => 1, 
    '-arch' => 1, 
    '-m32' => 0, 
    '-m64' => 0, 
    '-stdlib' => 0, # This is really a 1 argument, but always has '=' 
    '--sysroot' => 1, 
    '-target' => 1, 
    '-v' => 0, 
    '-mmacosx-version-min' => 0, # This is really a 1 argument, but always has '=' 
    '-miphoneos-version-min' => 0 # This is really a 1 argument, but always has '=' 
); 

в

'-target' => 1, 

должна быть

'--target' => 1, 

(с двойным '-'). ..

Смежные вопросы