UbuntuでObjective-C
なんか気分でぐぐったらしっかり出てきた。
というわけで書く。
内容は以下の三つを参考(というか統合してます(笑))
とりまインストールでっせ。
普通に下のコマンド実行せよ(笑)
これで一応あるていど扱えるようになる。
コンパイルはgccのオプションとして行うことになるんだな(うぅ・・・絶対口調おかしい(*_*;))
試しに下のコードをhello.mとして保存
これでHello World!プログラムは出来上がりです。
で、こむずかしいことやるとこうなるらしい。
別にCerでもC++erでもObjective-Cerでもない…つまりC系には詳しくないってことだけど、まぁ(void)はキャストだろうし、NSAutoreleasePool *poolはポインタだろうなって察しはつく。
詳しいこと知りたければObjective-Cの入門書でも読んでください。一応手元にそれっぽいものあるけど今回はこれにて失敬。
じゃね♪
というわけで書く。
内容は以下の三つを参考(というか統合してます(笑))
- http://d.hatena.ne.jp/ykot/20100625/1277440933
- http://l-w-i.net/t/ubuntu/objc_001.txt
- http://l-w-i.net/t/ubuntu/objc_002.txt
とりまインストールでっせ。
普通に下のコマンド実行せよ(笑)
$ sudo aptitude install gobjc
$ sudo aptitude install libgnustep-base-dev
これで一応あるていど扱えるようになる。
コンパイルはgccのオプションとして行うことになるんだな(うぅ・・・絶対口調おかしい(*_*;))
試しに下のコードをhello.mとして保存
#importコンパイルは以下のとおり。
int main()
{
printf("Hello World!\n");
return 0;
}
$ gcc -lobjc hello.m./a.outはgccユーザーならおなじみのはず。
$ ./a.out
これでHello World!プログラムは出来上がりです。
で、こむずかしいことやるとこうなるらしい。
#importこれをtest.mとして保存。これのコンパイルは下のようにしなきゃいけないんだって。
#import
#import
#import
// クラス宣言
@interface Text : NSObject {
NSString *message;
}
- (void)setMessage :(NSString *)text;
- (void)printMessage;
@end
// クラス定義
@implementation Text : NSObject
- (void)setMessage :(NSString *)text {
message = text;
}
- (void)printMessage {
printf("%s\n", [message UTF8String]);
}
@end
// メイン
void main() {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
id text = [[Text alloc] autorelease];
[text setMessage:@"Hello World"];
[text printMessage];
[pool drain];
}
$ gcc test.m -lobjc -lgnustep-base -I/usr/include/GNUstep \(ここで多分改行してる)これでまた./a.out実行するとHello Worldって表示される。
> -fconstant-string-class=NSConstantString
別にCerでもC++erでもObjective-Cerでもない…つまりC系には詳しくないってことだけど、まぁ(void)はキャストだろうし、NSAutoreleasePool *poolはポインタだろうなって察しはつく。
詳しいこと知りたければObjective-Cの入門書でも読んでください。一応手元にそれっぽいものあるけど今回はこれにて失敬。
じゃね♪