Выполнение Clang-запроса к файлам target-c, импортирующим Foundation - PullRequest
1 голос
/ 27 марта 2019

Я пытаюсь использовать clang-query для запуска совпадений с файлами obj-c, которые импортируют Foundation, но он не работает. После сборки clang-query, переместив его в папку tools/extra, я запускаю его с помощью этой команды:

./clang-query MyClass.m -- -extra-arg-before "-isysroot/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk"

Но я получаю эту ошибку:

 fatal error: 'stdarg.h' file not found
#include <stdarg.h>

Как мне запустить clang-query, чтобы проанализировать мои источники target-c?

1 Ответ

0 голосов
/ 29 марта 2019

Проведя дополнительные исследования, я обнаружил, что правильным подходом является использование инструментов libTooling.Как указано в их документации:

Clang Tooling needs a compilation database to figure out specific build options for each file. Currently it can create a compilation database from the compile_commands.json file

Для проектов Xcode этот файл может быть сгенерирован следующим образом:

xcodebuild -project PROJECT_NAME.xcodeproj | xcpretty -r json-compilation-database --output compile_commands.json

, вам необходимо установить xcpretty драгоценный камень.(gem install xcpretty)

Источник: https://clang.llvm.org/docs/HowToSetupToolingForLLVM.html

ОБНОВЛЕНИЕ: ЕСЛИ как и у меня, у вас проблемы с файлом compile_commands.json, созданным из журналов xcodebuild, простопередайте эти команды в ваш двоичный файл:

-mios-simulator-version-min=10.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk -isystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.00/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks

Возможно, вам потребуется обновить некоторые параметры в зависимости от конфигурации вашей системы, но в настоящее время это работает нормально для меня.

...