第一篇,Windows下GNUstep编译环境配置及初编译
让我们一起来学习Object-c吧。
在Windows下做Object-c开发,说起来有点可笑,MacOS下自带了完整的开发环境,gcc编译器,xcode IDE,已经完美支持Object-c开发,可是,可是,谁叫咱还是“穷人”呢,应该还有不少“穷人”朋友和我一样,暂时还买不起MacBook,咱也不就此轻言放弃,还是让我们继续捣腾我们的Windows吧,闲话少扯,让我们开始吧。
gcc编译器,在Windows平台上,许多朋友可能首先想到的会是Cygwin,但Cygwin过于庞大复杂,光下载过程可能就已让很多朋友苦不堪言,还有复杂的环境配置,对于不想深入的朋友,的确不是最优的选择。这次介绍的是GNUstep轻量级跨平台开发环境,做Object-c开发,我们只需要到GNUstep官网下载图一中的三个组件,
下载地址
图一

选择FTP或HTTP服务器入口进入下载页面,MSYS System及Core组件尽量选择相同版本号的(如均选择0.29.0版本),Devel选择新近版本即可,三个组件尽100M左右大小,相对Cygwin1G多算小了吧。MSYS SystemàCoreàDevel顺序安装,安装目录自定(最好是不带中文字符的目录),至此,就已经完成了Windows下Object-c开发环境的安装,先熟悉一下GNUstep吧。
1、 GNUstep命令终端窗口路径为C:\GNUstep\msys\1.0\msys.bat,双击运行msys.bat,或者“开始à程序àGNUstepàShell”,即可打开GNUstep命令终端窗口,如图二;
2、 GNUstep支持绝大部分Linux命令集;
图二

Object-c在Windows下的编译工作将在这个窗口完成。
好吧,就先来一个最基础的编译吧。先来一段人类史上最神圣的代码,HelloWorld示例代码,Object-c程序文件以m为后缀,看HelloWorld.m,为以后方便查看,可创建一个目录来存储代码文件(如c:\oc_code),将HelloWorld.m放入目录下。
- #import <Foundation/Foundation.h>
- int main (int argc, char *argv[])
- {
- NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
- NSLog (@"Hello World !");
- [pool drain];
- return 0;
- }
好了,准备就绪,开始编译运行HelloWorld吧。介绍两种便捷的编译配置方式,makefile及sh,
1、编写GNUmakefile文件,注意,不带文件后缀名且文件名须为GNUmakefile,文件内容如下:
- include $(GNUSTEP_MAKEFILES)/common.make
-
- TOOL_NAME=HelloWorld
- HelloWorld_OBJC_FILES=HelloWorld.m
-
- include $(GNUSTEP_MAKEFILES)/tool.make
可修改红色字体内容来指向需要编译的文件;
2、编写build.sh文件,注意,后缀名为sh,文件名可随意更改,文件内容如下:
- gcc -o "$1" "$1.m" -I/GNUstep/System/Library/Headers -fconstant-string-class=NSConstantString -L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base
二者选其一放入与HelloWorld.m所在文件目录下,先来看看makefile方式。
打开GNUstep命令窗口,进入到c:\oc_code目录,执行make命令,如图三,若显示内容无异常,则编译通过。
图三

查看代码文件目录,可发现生成obj文件夹目录,里边生成了可执行文件HelloWorld.exe及编译附属文件夹HelloWorld.obj,回到命令窗口,进入到obj文件夹,执行./HelloWorld.exe即可看到代码的执行输出效果,如图四
图四

makefile编译方式结束。
接着来看sh方式,命令窗口退回到oc_code目录,执行之前编写保存好的build.sh,命令为sh build.sh HelloWorld,如图五,查看代码文件目录,可见sh方式编译只生成了HelloWorld.exe可执行文件,执行
图五

至此,Object-c在Windows平台下使用GNUstep环境进行简单配置及编译已完成,总的来说,sh方式较makefile方式更简便些,免去了makefile方式编译后需要在命令窗口来回切换文件目录去执行查看代码运行效果带来的麻烦,也不会生成其它让初学编译者疑惑的附属文件,本人推荐使用sh方式编译代码。
更多的配置内容及对GNUstep环境的结构功能,可到
GNUstep官网进行进一步的了解,纯英文网站哦,没事,要扛住,为了学好学深入Object-c,经常访问一些英文网站是必要的,就当顺便学英语吧,以后的博文,就开始学习Object-c了。如此陋文,还请各路朋友在查看的同时,多多批判指正。
/************************* 12月29日修改 *******************************/
对于makefile方式,makefile文件是不带(7月8日的文章中漏掉“不”字了)后缀名的,即与你
的.m代码文件同处目录下应该有一个文件叫GNUmakefile (文章中也有一处地方写成GNUmakfile
了,漏掉了“e”);在此贴张文件目录截图:

/************************************************************************/