GNUStep сделать с предварительно скомпилированным (и префиксным) заголовком .pch из проекта Xcode?

Я пытаюсь создать проект Xcode с помощью GNUStep-make. Сейчас проект очень маленький (3 класса), однако в ближайшие недели он вырастет до сотен классов, поэтому я пытаюсь сейчас все продумать и хорошо организовать.

Xcode создает файл ProjectName_Prefix.pch, который является заголовком, который: а) предварительно скомпилирован и б) имеет префикс для каждого файла в моем проекте; по крайней мере, если я правильно понимаю.

Теперь, как мне сообщить GNUStep-make, что делать с этим файлом при его сборке? Я добавил его в переменную XXX_PRECOMPILED_HEADERS.

Cioccolata_OBJC_PRECOMPILED_HEADERS = Cioccolata_Prefix.pch

При этом сборка завершается с ошибкой:

Making all for framework Cioccolata...
make[1]: *** No rule to make target `/Users/chris/Projects/Mac/Cioccolata/build/GNUStep/obj/PrecompiledHeaders/ObjC/Cioccolata_Prefix.pch', needed by `internal-precompile-headers'.  Stop.
make: *** [Cioccolata.all.framework.variables] Error 2

У меня также есть следующее в моем make-файле:

ADDITIONAL_OBJC_FLAGS += -include Cioccolata_Prefix.pch -Winvalid-pch

Я не уверен, что я сделал неправильно здесь. В основном я пытался следовать документации GNUStep для предварительно скомпилированных заголовков.

Ни один из исходных файлов моего проекта явно не включает структуру Foundation, поскольку это делает этот заголовок.


person d11wtq    schedule 23.04.2010    source источник
comment
Можете ли вы скомпилировать что-нибудь без файла pch? Просто какой-то простой тестовый класс..? В общем, люди из списка GNUstep очень полезны, и мало кто из SO, похоже, много знает о GNUstep, поэтому я бы посоветовал вам спросить там. (Я, например, не могу ответить на ваш вопрос.)   -  person Felixyz    schedule 23.04.2010
comment
При условии, что я редактирую каждый из своих файлов .m, чтобы добавить содержимое файла .pch, тогда да, он строится правильно. Однако я хотел бы понять, как использовать предварительно скомпилированный заголовок с GNUStep, поскольку эта функция, по-видимому, поддерживается.   -  person d11wtq    schedule 23.04.2010
comment
Глядя на расшифровку Xcode, он передает -x objective-c-header в gcc при предварительной компиляции заголовка. Я не уверен, как это сделать только для фазы сборки предварительно скомпилированных заголовков с помощью GNUStep-make.   -  person d11wtq    schedule 24.04.2010
comment
Я понял. При просмотре make-файлов я заметил две проблемы: 1) Расширение .pch не поддерживается, так как оно имеет жестко запрограммированное расширение .h. Я мог бы исправить это. 2) ADDITIONAL_OBJC_FLAGS должен был быть ADDITIONAL_OBJCFLAGS. Я только что переименовал .pch в своем проекте Xcode, чтобы он использовал .h по причинам совместимости. Теперь я собираюсь попытаться исправить make-файлы, чтобы разрешить .pch.   -  person d11wtq    schedule 24.04.2010
comment
Я успешно исправил make-файлы для взаимозаменяемой поддержки .h и .pch. Патч отправлен в список разработчиков. Надеюсь, он найдет свое место в проекте.   -  person d11wtq    schedule 24.04.2010


Ответы (1)


Спасибо, что обратили наше внимание на эту проблему и за ваш патч! :-)

Теперь это исправлено в магистрали gnustep-make и будет исправлено в gnustep-make 2.4.0 после выпуска.

Никола Перо (gnustep-make)

person Nicola    schedule 24.04.2010