Clang Tool (libtooling): установите путь поиска заголовка в стандартные заголовки libs. Основа основы

ссылка по теме http://kevinaboos.wordpress.com/2013/07/23/clang-tutorial-part-ii-libtooling-example

Я использую CommonOptionsParser проанализировать аргументы для инструмента clang:

// parse the command-line args passed to your code
CommonOptionsParser op(argc, argv);
// create a new Clang Tool instance (a LibTooling environment)
ClangTool Tool(op.getCompilations(), op.getSourcePathList());

// run the Clang Tool, creating a new FrontendAction (explained below)
int result = Tool.run(newFrontendActionFactory<SomeAction>());

и следующие параметры:

llvm/Debug+Asserts/bin/mytool  /somePath/someSource.mm --

Когда я запускаю инструмент (на основе clang libtooling) для какого-либо исходного файла, инструмент пытается найти включенные файлы, например:
#import “SomeClass.h”, или же #import<Foundation/Foundation.h>

И если он не может найти заголовки, он генерирует ошибки:

Неустранимая ошибка: файл «Foundation / Foundation.h» не найден.

Не могли бы вы сказать мне, если вы знаете, как я могу направить инструмент к стандартным фреймворкам? И как я могу направить его в какой-то заголовок пути поиска? Как я могу установить путь поиска заголовков при запуске инструмента?

2

Решение

Я решил проблему.
Вы можете добавить путь к фреймворку с опциями

-Iinclude -Ipath_for_foundation / Headers

после --

llvm/Debug+Asserts/bin/mytool  /somePath/someSource.mm -- -Iinclude -Ipath_for_foundation/Headers

НО, стандартные фреймворки обычно включаются с именем фреймворка в качестве префиксов

#import <Foundation/Foundation.h>

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

ОБНОВИТЬ:

решение

llvm/Debug+Asserts/bin/mytool  /somePath/someSource.mm -- -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk/System/Library/Frameworks/
7

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

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

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