Новичок - не могу скомпилировать цель c с помощью GNUStep - PullRequest
3 голосов
/ 23 января 2011

У меня есть вопрос, относящийся к этому вопросу Невозможно скомпилировать Objective C с помощью Gnustep в Windows

Я пытаюсь скомпилировать свое первое целевое приложение c в Windows. Файл hello.m (все файлы ниже созданы в Visual Studio)

#import <../Program Files/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;
}

Для его компиляции у меня есть GNUmakefile в том же каталоге:

include $(GNUSTEP_MAKEFILES)/common.make
TOOL_NAME = hello
YourProg_OBJC_FILES = hello.m
include $(GNUSTEP_MAKEFILES)/tool.make

Насколько я понимаю, когда я запускаю команду make, команда make выполняет GNUmakefile.

Когда я делаю это в оболочке GNUStep, я получаю ошибку

GNUmakefile:1 *** missing separator. Stop.

Я попытался добавить вкладку в первую строку. Это ничего не сделало. Да, я уверен, что это была табуляция, а не пробел.

Ответы [ 4 ]

3 голосов
/ 18 июля 2012

У меня была такая же проблема.Я использовал Notepad ++ для создания GNUmakefile.Моя кодировка по умолчанию с помощью Notepad ++ - UTF8.Но make.exe из MINGW32, похоже, ждет файл с кодировкой ANSI.

Итак, убедитесь, что ваш файл закодирован в ANSI.

1 голос
/ 18 февраля 2011

вы никогда не должны указывать полный путь к заголовочному файлу Foundation.h. Всегда должно быть #import <Foundation/Foundation.h>.

Это вместе с вашей проблемой makefile указывает на то, что на вашем компьютере что-то настроено неправильно. Вы запускали команду make из оболочки msys или из командной строки Windows? Если вы решили использовать командную строку Windows, вы столкнетесь с некоторыми проблемами, поскольку среда там не настроена правильно, в отличие от оболочки msys, предоставляемой с установщиком GNUstep.

Если вы хотите запустить gcc с другой стороны, вы можете взглянуть на этот SO ответ .

1 голос
/ 23 января 2011

make жалуется на ваш make-файл, поэтому у вас, вероятно, где-то есть синтаксическая ошибка.

См .: http://www.gnu.org/software/automake/manual/make/Error-Messages.html:

Это означает, что make не можетпонять многое из строки makefile, которую он только что прочитал.GNU make ищет различные разделители (:, =, префиксные символы рецепта и т. Д.), Чтобы указать, какую строку она анализирует.Это сообщение означает, что оно не может найти действительное.

Попробуйте попробовать скомпилировать напрямую:

gcc -o hello hello.m -I/c/GNUstep/GNUstep/System/Library/Headers \
    -L /c/GNUstep/GNUstep/System/Library/Libraries -lobjc -lgnustep-base \
    -fconstant-string-class=NSConstantString
0 голосов
/ 12 сентября 2012

В вашем GNUmakefile , YourProg_OBJC_FILES должно быть изменено на hello_OBJC_FILES , как показано ниже

include $(GNUSTEP_MAKEFILES)/common.make
TOOL_NAME = hello
hello_OBJC_FILES = hello.m
include $(GNUSTEP_MAKEFILES)/tool.make

Или вы также можете простоскомпилировать в командной строке следующим образом:

$ gcc `gnustep-config --objc-flags` hello.m -o hello `gnustep-config --base-libs`

Команда gnustep-config like pkg-config может распечатать параметры компиляции и компоновки для gcc.

...