关闭

win obj-c codeblocks

878人阅读 评论(0) 收藏 举报

1、安装编译器  

http://www.gnustep.org/experience/Windows.html 

download

Package Required? Stable Unstable Notes
GNUstep MSYS System Required 0.29.0 - MSYS/MinGW System
GNUstep Core Required 0.29.1 - GNUstep Core
GNUstep Devel Optional 1.4.0 - Developer Tools
Cairo Backend
其中,前两个软件包是必须要安装的,第三个软件包是安装一些开发工具,比如:gcc、g++等,所以如果是学习Objective C的话,这个包也是必须要安装,第四个软件包是安装glib等库,这个包安装不安装根据具体情况而定。

makefile方式

在Windows环境下用文本编辑器(Editplus,UE等),编写上述代码,并且保存到GNUstep安装目录下的/home下,比如我把GNUstep安装在D:\app\下面,则你的文件应该放在GNUstep\msys\1.0\home\主机名 下面,具体路径可以在console下面运行pwd命令查看。


3.新建文件GNUmakefile

切记,文件的名字即为GNUmakefile不带扩展名,并输入:
#!/bin/sh


gcc -o $1 $2 -I/GNUstep/System/Library/Headers -fconstant-string-class=NSConstantString -L/GNUstep/System/Library/Libraries -lobjc -lgnustep-base

其中红色部分可以根据自己项目的需要修改,helloworld.m 部分,也可以加空格添加其他的.m文件,如:helloworld.m mian.m等。


4. 在然后打开GNUstep/shell,输入:
make 

编译。

5.测试运行

在GNUstep的Shell中 运行 helloworld.exe


object-c的GNUstep环境搭建、测试就ok了。
 另外:object-c有两种编译方式,一种即为makefile方式,另一种为sh方式

(未成功)

sh方式

 在Windows环境下用文本编辑器(Editplus,UE等),编写上述代码,并且保存到GNUstep安装目录下的/home下,比如我把GNUstep安装在D:\Developer\下面,则你的文件应该放在GNUstep\msys\1.0\home\主机名 下面,具体路径可以在console下面运行pwd命令查看,取名为helloworld.m。在GNUstep的console窗口命令行下,

    1、cd /home

    2、gcc -o helloworld helloworld.m -I/GNUstep/System/Library/Headers -fconstant-string-class=NSConstantString -L/GNUstep/System/Library/Libraries -lobjc -lgnustep-base

    3、运行helloworld.exe

   说明:第二步中的一些参数明说,如果熟悉Linux/Unix下C/C++编译的话,上述参数应该很熟悉,-I表示头文件查找的路径,-L表示库文件查找路径,-l表示需要链接的库文件。但是,-fconstant-string-class=NSConstantString  对于这个参数可能比较陌生,这个参数主要是指定常量字符串所使用的class。  

自己写了一个简单的脚本,要是嫌编译源代码麻烦,可以建一个文件,比如lc.sh,然后把下面的内容复制进去:

#!/bin/sh

gcc -o $1 $2 -I/GNUstep/System/Library/Headers -fconstant-string-class=NSConstantString -L/GNUstep/System/Library/Libraries -lobjc -lgnustep-base

然后在console下面运行如下命令:chmod +x lc.sh

以后要编译程序的时候,就在命令行下面输入:./lc.sh helloworld helloworld.m

文件中的$1和$2分别表示命令行中的helloworld 和 helloworld.m

可以在GNUstep下Shell中运行 helloworld.exe

    helloworld.exe编译并运行成功


2、安装CodeBlocks IDE环境

下载地址:http://www.codeblocks.org/

3、配置编译器

安装好codeblocks之后,进入Settings->Compiler and debugger...,选择GNU GCC Compiler编译器,复制重新命名为“GNUstep MinGW Compiler“配置

   

编译其他选项录入:-fconstant-string-class=NSConstantString -std=c99

image

同时指定搜索目录:
》编译器的搜索目录是D:\GNUstep\GNUstep\System\Library\Headers
》linker的搜索目录设置为D:\GNUstep\GNUstep\System\Library\Libraries,同时设置linker的参数:-lobjc -lgnustep-base 
或者可以在linker选项中加入D:\GNUstep\GNUstep\System\Library\Libraries下面的2个文件libgnustep-base.dll.a,libobjc.dll.a

image

image

设置编译器、连接器的搜索目录

image

4、配置语法、文件类型,关键字等

添加文件类型支持

1) 进入Settings->Environment...

2) 选择 Files extension handling 添加*.m

3) 进入 Project->Project tree->Edit file types & categories...

4) 在Sources, 下面添加 *.m到文件类型列表中.

image

添加语法高亮支持

1) 进入 Settings->Editor...

2) 选择 Syntax highlighting 进入Filemasks.... 添加*.m 到文件类型列表中.

3) 进入 Keywords... (紧靠Filemasks...) 添加下面的关键字到列表中

@interface @implementation @end @class @selector @protocol @public @protected @private id BOOL YES NO SEL nil NULL self

语法高亮中,加入*.m扩展名
image 

5、代码测试

1.创建Objective-C工程
创建一个Console的C工程,将main.c删除,新建main.m文件,内容如下:
#import <Foundation/Foundation.h>
int main (int argc, const char *argv[]) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSLog(@"Hello World!");
    [pool drain];
    return 0;
}

右击main.m点击property,选择Build选项卡,将Compile file与Link file都打上勾,
选择Advanced,将Compiler variable的内容改为CC

2.设置编译选项

(1)方法一
右击将创建的工程,选择Build options…,Selected compiler编译器选择GNUstep MinGW Compiler, 选择Compiler settings>Other options中填入-fconstant-string-class=NSConstantString 
选择Linker settings选项卡,点击Add,增加如下两行内容:
C:/GNUstep/GNUstep/System/Library/Libraries/libobjc.dll.a
C:/GNUstep/GNUstep/System/Library/Libraries/libgnustep-base.dll.a
选择Search directories>Compiler,点击Add,增加如下内容:
C:/GNUstep/GNUstep/System/Library/Headers

(2)方法二

右击将创建的工程,选择Build options…,Selected compiler编译器选择GNUstep MinGW Compiler, 选择Compiler settings>Other options中填入-fconstant-string-class=NSConstantString -IC:/GNUstep/GNUstep/System/Library/Headers  -LC:/GNUstep/GNUstep/System/Library/Libraries

选择Linker settings选项卡,在Other linker options中输入-lobjc -lgnustep-base即可


3.增加.m文件类型高亮及编辑器关联
(1)点击Settings>Editors>Syntax highlighting, 选择Syntax highlighting for: C/C++,点击Filemasks…,在弹出窗口里面加入*.m,点OK
选择Matlab,点击Filemasks…,将里面的*.m删除
(2)点击Settings>Environment>Files extension handling,点击*.m,在To open the file中选择
Open it in a Code::Blocks editor即可

新建一个工程,修改main.c为main.m,录入下面代码

#import <Foundation/Foundation.h>

int main (int argc, const char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSLog(@"%@",@"hello world");
    [pool drain];
    return 0;
}

编译运行效果如下:

2012-03-07 17:33:49.711 objc1[6080] hello world

Process returned 0 (0x0)   execution time : 0.220 s
Press any key to continue.




0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

codeblocks编译出错问题的解答!(编译c++ 或者c程序)

典型错误: execution of 'mingw32-g++.exe ……faile! codeblocks cannot exec `cc1plus': No such file or direc...
  • jingmiaa
  • jingmiaa
  • 2016-07-28 12:58
  • 4421

C&C++入门篇---CodeBlocks的安装与简单配置

最近接触C&C++语言,很多人都在用microsoft visual c++软件,无奈本人安装各种版本,由于与电脑不匹配,始终装不上!有人说道可以通过换系统办法解决,总不能为了装这个软件,而把我其它软...
  • LYX1945057326
  • LYX1945057326
  • 2016-10-18 19:22
  • 6162

codeBlocks创建新的c语言项目

1.打开软件,选择右上角file->project,之所以此处选择project,是因为一个完整的程序一般均有多种源文件组成,例如代码,说明文档,其他外链资源等,因此新建一个project是最常用的选...
  • u011751377
  • u011751377
  • 2015-08-30 21:24
  • 5290

obj-c2.0大全

  • 2013-07-22 09:54
  • 1.95MB
  • 下载

使用SudzC生成ARC版Obj-C代码出现返回结果为nil的疑问与暂时解决办法

近来几个使用web services的项目都是利用SudzC来生成Obj-C的处理代码,一直都用得很好,也很方便。 之前的项目都是非ARC的,新近建立了一个ARC的项目,而SudzC也有相应的生成A...
  • sing_sing
  • sing_sing
  • 2012-10-11 14:14
  • 1472

obj-c编程17:键值观察(KVO)

说完了前面一篇KVC,不能不说说它的应用KVO(Key-Value Observing)喽。KVO类似于ruby里的hook功能,就是当一个对象属性发生变化时,观察者可以跟踪变化,进而观察或是修正这个...
  • mydo
  • mydo
  • 2014-07-06 19:15
  • 1323

菜鸟初尝iOS之 Obj-C中的代理(委托)模式 理解

对iOS中的委托(代理)设计模式的理解
  • carmelo2243
  • carmelo2243
  • 2015-04-14 08:55
  • 306

obj-c编程13:归档

这篇归档内容的博文也挺有趣的,笨猫对好玩的东西一项感兴趣啊!如果yong
  • mydo
  • mydo
  • 2014-07-03 15:15
  • 1156

obj-c编程12:复制对象

好吧,上一篇
  • mydo
  • mydo
  • 2014-07-03 09:43
  • 930

解析Obj-C中的assgin,copy,retain关键字的含义。

在objc中引入了引用计数的概念Refr
  • zzzili
  • zzzili
  • 2014-09-03 17:16
  • 606
    个人资料
    • 访问:210887次
    • 积分:3442
    • 等级:
    • 排名:第11287名
    • 原创:91篇
    • 转载:2篇
    • 译文:0篇
    • 评论:22条
    CONTACT ME
    文章分类
    最新评论