一、安装GNUstep for Windows
Windows installer
http://wwwmain.gnustep.org/experience/Windows.html
GNUstep MSYS
GNUstep Core
GNUstep Devel
三个安装包都需要下载,GNUstep MSYS和GNUstep Core相当于Objective-C的运行时,而GNUstep Devel相当于XCode中使用的Foundation和UIKit。
GNUstep Devel依赖于GNUstep MSYS和GNUstep Core才可以运行。
二、测试GUI运行情况
上面的安装包默认不安装任何图形界面的程序。
只能通过开始菜单->GNUstep->Shell启动MSys命令行执行一些命令行指令。
基本操作和MinGW相同,唯一不同的是在
C:\GNUstep\GNUstep\System\Tools
有一些特有的程序,如openapp。
在官网上有个现成的示例代码包。
搜索GNUstep Development Tools下的Examples:
ftp://ftp.gnustep.org/pub/gnustep/core/gnustep-examples-1.3.0.tar.gz
下载解压后,切换到指定目录下执行make即可编译,用openapp运行
三、使用gdb调试
HelloWorld命令行程序的编写、编译和调试方法参见:
http://www.nongnu.org/gstutorial/zh_TW/index.html
NSLog的输出需要gdb(直接执行程序是无法看到输出的),所以必须先了解gdb的使用方法(通常的做法是用.gdbinit编写调试脚本,所以必须搞清楚这个gdb支持哪些命令)。
1. 帮助:
http://sourceware.org/gdb/onlinedocs/gdb/
http://www.nongnu.org/gstutorial/
http://www.nongnu.org/gstutorial/en/index.html
http://www.nongnu.org/gstutorial/zh_TW/index.html
2. 相关问题
1) .gdbinit文件需要用echo创建。(或者用touch命令)
2) 用gdb -ex "help all" -ex "quit" > gdbhelp.txt查看gdb支持的指令(尽量写在.gdbinit文件中,在执行gdb时自动执行)。
3) GNUmakefile不能改名为Makefile,否则执行make后会出错。
4) 只有使用gdb时才可以看到NSLog的输出。
3. 参考代码和命令
.m文件(objc代码)
//prog1.m #import <Foundation/Foundation.h> int main(int argc, const char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSLog(@"Hello World!"); [pool drain]; return 0; }
GNUmakefile文件(编译用)
# GNUmakefile include $(GNUSTEP_MAKEFILES)/common.make APP_NAME = HelloWorld HelloWorld_HEADERS = HelloWorld_OBJC_FILES = prog1.m HelloWorld_RESOURCE_FILES = include $(GNUSTEP_MAKEFILES)/application.make
.gdbinit(调试用,不是必需的,用于屏蔽调试输出,因为gdb默认读取.gdbinit中的指令)
# .gdbinit # http://sourceware.org/gdb/onlinedocs/gdb/ set debugevents off set debugexceptions off set print thread-events off run quit
执行命令:(openapp --debug等效于debugapp)
(TODO)