【摘要】
介绍Objective C++ 在windows 环境下的搭建知识. 注意, 本文的目的只是为了搭建一套学习语言的环境, 而非发布一个AppStore的应用. 如果要发布应用, Windows平台似乎无能为力, 因此如果找寻发布应用的环境搭建. 与本文无关.
附带说一句: 写完这个博客后的一个月, 我入手了MAC AIR——作为一个开发人员, 将时间花费在无休止的跟环境做斗争上面去, 实在是有些无聊。 所以我决定不浪费有限的生命,花钱消灾。 后面我就慢慢一步步熟悉一下MAC开发环境, 逐步过渡到IOS系统级开发。
所以我建议您不要往下看了。 如果您是闲得蛋疼、有时间没金钱, 当然可以考虑在非MAC平台学习OBJ-C, 但你要知道, 没有产品去练手, 永远都是白费精力。
【核心内容】
通过GCC编译环境实现对Objective C++的编译. 原本采用 Cygwin + GNUstep, 发现Cygwin配置存在问题, 后面改用GNUStep官方使用的MinGw直接一键式安装.
Cygwin的安装方式将后续持续关注, 有进展将更新本博客, 目前请绕过Cygwin的内容.
环境搭建步骤:
1. 下载Cygwin, 请找其它资料了解如何搭建这样一个环境, 我们利用Cygwin的目的, 仅仅是利用其提供的GCC编译组建, 并且Cygwin可以在windows下面很好的运作.
2. 下载核心GNUstep核心组件
这些组件包括四个:
1. GNUstep Make 2. GNUstep Base 3. GNUstep GUI 4. GNUstep Backend |
3. 按照提示安装
用户文档 大致的步骤如下, 【强烈建议按照英文参考文献】:
- 先安装 GUNstep Make. 就是将这个包解压缩后, 在Cygwin下运行几个命令
- ./configure
- make
- make install
- ./usr/local/share/GNUstep/Makefiles/GNUstep.sh
- 然后安装 gnustep-base, gnustep-gui and finally gnustep-back. 就是./Configure后面在make 和install
4. 后面出了一堆错误
Pre-requisites
重新将需要的Cygwin包加入, 依然在安装GNUStep base的时候, 报如下错误:
ld returned 1 exit status
[4]: *** [obj/libgnustep-base.dll.a] Error 1
[4]: *** Deleting file `obj/libgnustep-base.dll.a'
[3]: *** [internal-library-all_] Error 2
[2]: *** [libgnustep-base.all.library.variables] Error 2
[1]: *** [internal-all] Error 2
: *** [internal-all] Error 2
非常郁闷中, 原因竟然是不支持Cygwin.
按照上文提示: 直接用MinGW Installer搞定.
下载链接 选中1. GNUstep MSYS System [这个是MinGW的套件] 这个必须要
2. GNUstep Core 核心包, 这个必须要
3. GNUstep Devel 这个必须要, 因为GCC都在里面, 如果你安装过其它的GCC版本, 建议卸掉,在安装这个
4. 其它的没试过, 但建议都安装上
现在开始可以编译了, 站在牛人的肩膀上 看看
Objective-C:GCC+GNUstep配置
按照上文提示: 这个编译指令应该没有问题:
gcc -fconstant-string-class=NSConstantString -c main.m -I /GNUstep/System/Library/Headers
实际上报错了: 提示如下:
: error: #error The current setting for native-objc-exceptions does not match th
at of gnustep-base ... please correct this.
找到一篇文章对付这个扯蛋的问题:
这样是可行的:
$ gcc `gnustep-config --objc-flags` -fconstant-string-class=NSConstantString -c main.m -I /GNUstep/System/Library/Headers
有兴趣可以研究一下该文。我也会更新一下本人的理解
但本文最大的目标不是玩上面的命令行, 而是用IDE的方式快速进行工程管理, 采用的方式是: Eclipse + GNUstep配套组建MinGW来完成. 后面继续补上