Невозможно скомпилировать Objective C, используя Gnustep на окнах - PullRequest
2 голосов
/ 25 мая 2009

Привет, я начинающий, цель обучения c. я нахожу ошибку "hello.m: 1: 34: Foundation / Foundation.h: нет такого файла или каталога" я узнал, что мне нужно сделать файл make Могу ли я узнать, как сделать файл make, пожалуйста

Ответы [ 4 ]

5 голосов
/ 03 июня 2009

Нет необходимости создавать make-файл. Если вы запускаете MinGW из «Все программы -> GNUstep -> Shell», как указывает Pax выше, вы можете просто скомпилировать ваш файл .m.

Моя установка GNUstep находится в каталоге c: \ GNUstep \ GNUstep \ System. Если у вас другое, вам следует соответствующим образом изменить импорт Foundation.h.

Я сделал это:

  1. Создайте c: \ myprogs \ obj-c \ hello \ hello.m, который выглядит следующим образом:

// ---------- Hello.m

#import <../../GNUstep/System/Library/Headers/Foundation/Foundation.h>

int main(int argc, const char* argv[])
{
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
    NSLog(@"Hello from Hello.m!");

    [pool release];
    return 0;
}

// ----------

  1. Запуск оболочки MinGW. (См. Выше.)

  2. В командной строке оболочки перейдите в каталог, в котором находится программный код. (Обратите внимание, что, поскольку это не Unix, необходимо указать букву диска Windows.):

    cd / c / myprogs / obj-c / hello

  3. Скомпилируйте программу:

    gcc -o привет hello.m -I / c / GNUstep / GNUstep / Система / Библиотека / Заголовки \

    -L / c / GNUstep / GNUstep / Система / Библиотека / Библиотеки -lobjc -lgnustep-base \

    -fconstant-строка-класс = NSConstantString

(Обратите внимание, что символ "\" позволяет расширить команду до нескольких строк.)

При компиляции я получаю следующие информационные сообщения:

Info: resolving ___objc_class_name_NSAutoreleasePool by linking to __imp____objc_class_name_NSAutoreleasePool (auto-import)
Info: resolving ___objc_class_name_NSConstantString by linking to __imp____objc_class_name_NSConstantString (auto-import)

Запуск получившегося файла hello.exe дает мне следующее:

2009-06-03 14:44:59.483 hello[1240] Hello from Hello.m!
3 голосов
/ 25 мая 2009

Эта проблема выглядит так, как будто вы не указали gcc, где искать соответствующие включаемые файлы (т.е. каталог, в котором находится Foundation/Foundation.h).

Запускаете ли вы gcc из-под MinGW или из командной строки. У вас должно быть "All Programs -> GNUstep -> Shell" в вашем меню Пуск, которое вызывает эту оболочку.

Makefile для этого должен быть таким простым:

include $(GNUSTEP_MAKEFILES)/common.make
TOOL_NAME = YourProg
YourProg_OBJC_FILES = source_code.m
include $(GNUSTEP_MAKEFILES)/tool.make
1 голос
/ 08 февраля 2010

Если вы поместите свои исходные коды в домашний каталог в GNUStep, вам не нужно указывать относительное расположение платформы Foundation.

0 голосов
/ 29 апреля 2010

Использование make-файла, такого как указанный paxdiablo, вероятно, самый простой, потому что вместо того, чтобы каждый раз вспоминать непонятную командную строку, вы настраиваете make-файл и затем вызываете make из исходной папки. Однако мой опыт работы с Windows показал, что GNUStep и Windows, даже с оболочкой, не будут собираться с использованием этого, поскольку не могут найти все необходимые файлы make - добавьте переменную окружения GNUSTEP_MAKEFILES со значением / GNUstep / System / Library / Makefiles и перезапустите эту оболочку, и тогда любые ошибки из-за невозможности найти стандартные make-файлы должны быть историческими. (Я пытался использовать полные пути к make-файлам, но обнаружил, что это включает в себя определенные make-файлы, но затем не удалось при попытке добавить дополнительные, следовательно, пошел по простому маршруту и ​​добавил переменную окружения.)

...