Если вы правильно установили GNUstep и ваша среда настроена (все объяснено в документации), то вам действительно нужно создать пустой GNUmakefile в корневом каталоге вашего проекта и перечислить в нем свои источники.
Вот простой пример командной строки «Hello World»:
Создайте каталог, содержащий ваш исходный код.HelloWorld было бы хорошей идеей.
В этом, создайте файлы main.m
, Greeter.m
и Greeter.h
.
Мы создадим класс Greeter
, который будет иметь только одинmethod -sayHelloToRecipient:
.
В Greeter.h
:
#import <Foundation/Foundation.h>
@interface Greeter : NSObject {
}
-(void)sayHelloToRecipient:(NSString *)recipientName;
@end
И в Greeter.m
:
#import "Greeter.h"
@implementation Greeter
-(void)sayHelloToRecipient:(NSString *)recipientName {
NSLog(@"Hello %@!", recipientName);
}
@end
Ваш файл main.m
просто содержитGreeter
и вызывает его с аргументом @"World"
.
#import "Greeter.h"
int main(void) {
Greeter *greeter = [[Greeter alloc] init];
[greeter sayHelloToRecipient:@"World"];
[greeter release];
return 0;
}
Теперь у вас есть готовые источники для сборки, вам просто нужно создать a GNUmakefile
.Создайте пустой файл и начните его со строки: include $(GNUSTEP_MAKEFILES)/common.make
, заканчивающейся строкой include $(GNUSTPEP_MAKEFILES)/tool.make
.
Первая строка включает все остальные make-файлы и цели, предоставляемые GNUstep.Последняя строка включает make-файлы, необходимые для создания инструмента командной строки.Если бы вы создали приложение с графическим интерфейсом, вы бы включили application.make
.Для фреймворков вы бы включили framework.make
и т. Д.
include $(GNUSTEP_MAKEFILES)/common.make
# Your project-specific directives will go here
include $(GNUSTEP_MAKEFILES)/tool.make
То, что вы помещаете между этими строками, - это то, что меняется от проекта к проекту.это:
include $(GNUSTEP_MAKEFILES)/common.make
HELLO_ROOT_DIR = $(abspath .)
GNUSTEP_BUILD_DIR = $(HELLO_ROOT_DIR)/build
TOOL_NAME = HelloWorld
HelloWorld_OBJC_FILES = \
Greeter.m \
main.m
include $(GNUSTEP_MAKEFILES)/tool.make
HELLO_ROOT_DIR
совершенно необязательно и является просто переменной, которая избавляет меня от необходимости повторно вводить путь к корню по мере роста проекта (как и сложность make-файла).
TOOL_NAME
требуется для инструмента командной строки и определяет как имя выходного файла, так и определяет, что вам нужно использовать для строки *_OBJC_FILES
(т.е. в этом случае мне нужно использовать HelloWorld_OBJC_FILES
, потому чтоTOOL_NAME
- это "HelloWorld".
Имея это в наличии, при условии, что вы находитесь в том же каталоге, что и make-файл, вы можете просто набрать `make 'для сборки инструмента. Это создасткаталог "build" и внутри которого вы найдете исполняемый файл. Этот при вызове просто выводит:
-$ ./build/obj/HelloWorld
2010-11-28 03:36:28.459 HelloWorld[12949] Hello World!
Ничего из этого не будет работать, однако, если ваша среда не настроена правильно. Я никогда этого не делална победуДоу, но я предполагаю, что применяются те же принципы.Для настройки среды выполняется сценарий оболочки в Linux / UNIX (запускается пакетный файл в Windows?).
-$ . /usr/share/GNUstep/Makefiles/GNUstep.sh
Проверить правильность настройки можно, напечатав переменную среды GNUSTEP_MAKEFILES
вconsole:
-$ echo $GNUSTEP_MAKEFILES
(Не уверен, как вы это делаете в Windows)
Если ничего не выводится, ваша среда настроена неправильно и / или GNUstep установлен неправильно.Если он выводит путь, вы можете безопасно запускать `make '.