假设你已经正确安装了 GNUstep 并且你的环境已经设置好了(所有都在文档中解释过),那么你实际上需要在你的项目的根目录中创建一个空白的 GNUmakefile 并在其中列出你的源代码。
这是一个简单的“Hello World”命令行示例:
创建一个目录来包含您的源代码。HelloWorld 将是一个好主意。
在那里,创建文件main.m
和.Greeter.m
Greeter.h
我们将创建Greeter
一个只有一个方法的类-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;
}
现在您已经准备好构建源代码,您只需要创建一个GNUmakefile
. 创建一个空文件,并以行开头:include $(GNUSTEP_MAKEFILES)/common.make
,以行结尾include $(GNUSTPEP_MAKEFILES)/tool.make
。
第一行包括 GNUstep 提供的所有其他 makefile 和目标。最后一行包括生成命令行工具所需的 makefile。如果您正在构建一个 GUI 应用程序,您将包括application.make
. 对于您要包含的框架framework.make
等。
include $(GNUSTEP_MAKEFILES)/common.make
# Your project-specific directives will go here
include $(GNUSTEP_MAKEFILES)/tool.make
你放在这些行之间的东西是随着项目的变化而变化的东西。
完整的GNUmakefile
样子是这样的:
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
完全是可选的,它只是一个变量,它使我不必随着项目的增长而重新键入根路径(makefile 的复杂性也是如此)。
TOOL_NAME
是命令行工具所必需的,它指定了输出文件名,并确定了你需要为该*_OBJC_FILES
行使用什么(即在这种情况下我需要使用HelloWorld_OBJC_FILES
,因为TOOL_NAME
它是“HelloWorld”。
有了这个,只要你和makefile在同一个目录下,你应该可以输入“make”来构建工具。它将创建一个“构建”目录,您将在其中找到可执行文件。这个在调用时只输出:
-$ ./build/obj/HelloWorld
2010-11-28 03:36:28.459 HelloWorld[12949] Hello World!
但是,如果您的环境配置不正确,这些都将不起作用。我从来没有在 Windows 上这样做过,但我认为同样的原则也适用。这是在 Linux/UNIX 上运行 shell 脚本(在 Windows 上运行批处理文件?)以配置环境。
-$ . /usr/share/GNUstep/Makefiles/GNUstep.sh
GNUSTEP_MAKEFILES
您可以通过将环境变量打印到控制台来检查它是否配置正确:
-$ echo $GNUSTEP_MAKEFILES
(不确定您如何在 Windows 上执行此操作)
如果它没有输出,则说明您的环境配置不正确和/或 GNUstep 未正确安装。如果它输出一个路径,你应该可以安全地运行“make”。