Не могу скомпилировать plcrashreporter в Xcode 4 - PullRequest
5 голосов
/ 01 июля 2011

Я могу использовать готовый фреймворк, предоставленный на странице проекта plcrashreporter, при компиляции для устройства, но не для симулятора.У меня та же самая проблема , описанная здесь .

Я предполагаю, что предустановленный фреймворк не поддерживает архитектуру симулятора, поэтому я скачал исходный код plcrashreporter.Я открыл проект Xcode и выбрал цель CrashReporter-iOS-Simulator > iPhone 4.3 Simulator.Когда я пытаюсь построить проект, я получаю эту ошибку:

libtool: unknown option character `D' in: -D__IPHONE_OS_VERSION_MIN_REQUIRED=30000

Я получаю ту же ошибку, когда пытаюсь построить большинство других целей (например, для устройства).

Мой следующий шаг - попытаться добавить исходные файлы в мой проект.У меня больше нет вышеупомянутой проблемы;однако, я получаю эту ошибку, когда пытаюсь скомпилировать:

fatal error: 'crash_report.pb-c.h' file not found [2]
 #import "crash_report.pb-c.h"
         ^
1 error generated.
Command clang failed with exit code 1

Файл crash_report.pb-c.h, который упоминается в сообщении об ошибке, просто не существует;Я искал дерево исходников plcrashreporter и интернет.Поэтому я должен предположить, что этот файл должен быть сгенерирован каким-то образом, но я не могу понять, как.

(Комментирование строки в PLCrashReport.m, в которую включен crash_report.pb-c.h, приводит к многочисленным другим компиляциямошибки.)

1 Ответ

5 голосов
/ 19 августа 2011

Вы правы в том, что файл не существует нормально, и crash_report.pb-c.c не существует, что будет вашей следующей ошибкой после этой.

Файлы crash_report.pb.h и crash_report.pb.c создаются во время компиляции с помощью правила сборки.Вам нужно добавить собственный сценарий в процесс сборки, чтобы сделать их.

Сначала убедитесь, что у вас есть protoc-c в папке plcrashreporter вашего проекта (plcrashreporter-1.0/Dependencies/protobuf-2.0.3/bin/protoc-c).Они похоронили это глубоко.Это то, что будет запускать ваш скрипт.

Затем найдите файл crash_report.proto.Это основной вход, который protoc-c будет использовать для создания отсутствующих файлов.Вы можете взять этот каталог и поместить его вручную в ваш скрипт, или вы можете создать правило для запуска скрипта для каждого файла *.proto.Я делаю последнее.

Затем отредактируйте ваши правила сборки, чтобы включить скрипт, который запускает protoc-c с флагом --c_out="${DERIVED_FILES_DIR}" и ваш файл crash_report.proto в качестве двух входных данных, это выведет crash_report.pb-c.h и crash_report.pb-c.c в ту же директорию, где находится ваш файл crash_report.proto, который уже должен быть доступен в вашем проекте.

Правила сборки в Xcode 4 (и выше) находятся на вкладке правил сборки цели вашего проекта.Вы добавляете правило сборки перед всеми другими вашими правилами сборки.Вот как выглядит мой код в Xcode:

Here's what mine looks like in Xcode.

Возможно, вам придется возиться с каталогом

...