Objective-C 入門(2) Mac OSX で `hello, world'
Mac OSX で `hello, world'
昨晩のネタ を OSX でコンパイルするには、Makefile を書き換える必要があります。
といいますのも、この hello, world に出てくる NSString というクラスが、
言語の標準仕様に含まれる std::string のようなものではなくて、
単に Foundation という OPENSTEP のフレームワークに含まれているクラスライブラリで、そのリンクの指定を Makefile に書いていたからです。
#Visual C++ なら MFC の CString といった感じ
は、OPENSTEPの互換品であるGNUstepのライブラリをリンクするための指定なのです。
LDFLAGS = -lobjc -L/usr/lib/GNUstep/System/Library/Libraries/ -lgnustep-base
OSX は OPENSTEP 直系の OS なので、GNUstep など使わなくても最初から Foundation が使えますが、LDFLAGS の指定がちょっと独特です。
具体的には、
とします。
LDFLAGS = -framework Foundation
これで昨晩のネタがばっちり OSX で動くようになりました。
Makefile
CC = gcc
CFLAGS = -Wall -g
LDFLAGS = -framework FoundationLD = gcc
HELLO = hello
SRCS = main.m Hello.m
HEADS = $(SRCS:.m=.h)
OBJS = $(SRCS:.m=.o)all: $(HELLO)
clean:
$(RM) $(RMFLAGS) $(OBJS) $(HELLO)$(HELLO): $(OBJS)
$(CC) $(LDFLAGS) -o $(HELLO) $(OBJS).SUFFIXES:.o .m
.m.o:
$(CC) -c $(CFLAGS) $<
コンパイルと実行
% make
gcc -c -Wall -g main.m
gcc -c -Wall -g Hello.m
gcc -framework Foundation -o hello main.o Hello.o
% ./hello
hello, world