OCLint не может обнаружить предварительно скомпилированные заголовки рабочей области / проекта
Я получаю сообщение об ошибке ниже при попытке построить мой агрегат OCLint. Мы используем предварительно скомпилированные заголовки в рабочей области, и хотя на них ссылаются точно так же в основной цели и агрегате OCLint, по какой-то причине агрегат OCLint не может обнаружить pch. Вот почему не может быть найдена зависимость "CocoaLumberjack / CocoaLumberjack.h".
Я использую XCode 7.1.1 под OXS 10.11.1. Любые предложения приветствуются.
* === СОЗДАТЬ ЦЕЛЬ [Target] ПРОЕКТА [Project] С КОНФИГУРАЦИЕЙ Debug === Проверить зависимости ProcessPCH /var/folders/nv/y04q5c5s30567pk7w8lts7zr0000gn/C/com.apple.DeveloperTools/7.1.1-7B1005/Xcode.1-7B1005/Xcode/SharedPrecompiledHeaders/[Проект]-Prefix-canqfypuftycqgglhiqfotrflhkv/[Проект]-Prefix.pch.pch [Проект]/[Проект] -Prefix.pch обычный armv7 target-c com.apple.compcgl..1_0.compiler cd /Users/.../Dev/Applications/[Project] export LANG = en_US.US-ASCII export
PATH = "/ Applications / Xcode.app / Содержание / Разработчик / Платформы /iPhoneOS.platform/ Разработчик / USR / бен:/Applications/Xcode.app/Contents/Developer/usr/bin:/Users/.../StaticCodeAnalysis/OBJ-C/OCLint/oclint-0.8.1/ бен:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ USR / libexec:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/ местные / бен: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/bin: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/usr/local/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/local/bin:/Applications/Xcode.app/Contents/Developer/Tools:/usr/local/bin: / USR / бен: / бен: / USR / SBIN: / SBIN"
:: /Users/.../Dev/Applications/[Project]/[Project]/[Project]-Prefix.pch:16:9: фатальная ошибка: файл 'CocoaLumberjack/CocoaLumberjack.h' не найден [#import]
^
1 ошибка сгенерирована. ** СТРОИТЬ НЕУДАЧИ ** [Проект]
Не удалось выполнить следующие команды сборки: ProcessPCH /var/folders/nv/y04q5c5s30567pk7w8lts7zr0000gn/C/com.apple.DeveloperTools/7.1.1-7B1005/Xcode/7.1.1-7B1005/Xcode/SharedPrecompiledHeaders/[Project]-kfflgvg_vf_vvvvvvvvrv [Project]-Prefix.pch.pch [Project]/[Project]-Prefix.pch обычный armv7 target-c com.apple.compilers.llvm.clang.1_0.compiler (1 сбой)*
2 ответа
Обновление: мне удалось решить эту проблему, выполнив следующую команду:
xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyScheme
Я столкнулся с этой проблемой на macOS Monterey (
12.2
) при попытке запустить OCLint черезpre-commit
. Сообщение об ошибке от OCLint намекало на отсутствующую «базу данных компиляции», а затем давало
'stdio.h' file not found
для заголовков стандартной библиотеки системы C.
Ручное решение
Решение состояло в том, чтобы убедиться, что файл существует в каталоге сборки C верхнего уровня. Очевидно, это создается автоматически, если вы используете CMake, но проект не использовал CMake.
Создание файла вручную сработало:
:
[
{
"directory": ".",
"command": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk -o enum-test.arm64.o -c enum-test.c",
"file": "enum-test.c"
},
{
"directory": ".",
"command": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk -o test-args.arm64.o -c test-args.c",
"file": "test-args.c"
},
{
"directory": ".",
"command": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk -o test-vars.arm64.o -c test-vars.c",
"file": "test-vars.c"
},
{
"directory": ".",
"command": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk -o cidr_ranges.arm64.o -c cidr_ranges.c",
"file": "cidr_ranges.c"
},
{
"directory": ".",
"command": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk -o rectangle.arm64.o -c rectangle.c",
"file": "rectangle.c"
}
]
Сообщение об ошибке OCLint:
В моем случае ошибка намекала на отсутствие
compile_commands.json
прежде чем дать
file not found
за
.h
заголовочные файлы:
$ oclint -enable-global-analysis -enable-clang-static-analyzer -max-priority-3 0 ./enum-test.c -p=build -verbose --extra-arg -isysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk
Error while trying to load a compilation database:
Could not auto-detect compilation database from directory "build"
No compilation database found in ~/src/spikes/c-variables-and-data-types/build or any parent directory
fixed-compilation-database: Error while opening fixed database: No such file or directory
json-compilation-database: Error while opening JSON database: No such file or directory
Running without flags.
Compiling ~/src/spikes/c-variables-and-data-types/enum-test.c ...
- Failed
Clang Static Analyzer ~/src/spikes/c-variables-and-data-types/enum-test.c - Finished with Failure
Compiler Errors:
(please be aware that these errors will prevent OCLint from analyzing this source code)
~/src/spikes/c-variables-and-data-types/enum-test.c:8:10: 'stdio.h' file not found
Clang Static Analyzer Results:
~/src/spikes/c-variables-and-data-types/enum-test.c:8:10: 'stdio.h' file not found
OCLint Report
Summary: TotalFiles=0 FilesWithViolations=0 P1=0 P2=0 P3=0
[OCLint (https://oclint.org) v21.10]