万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

SwiftとObjective−C連携 without Xcode

他ではXcodeは必須な情報ばっかりだったので探した。

osx - Compiling and linking Swift plus Objective C code from the OS X command-line - Stack Overflow

このサイトの情報がいい。

Objective-Cのヘッダファイル

#import <Cocoa/Cocoa.h>
@interface C : NSObject
@property (retain) NSString *c;
@end

Objective-Cのソースファイル

#import "C.h"

@implementation C

- (id)init {
  self = [super init];
  self.c = @"Hello world!";
  return self;
}

@end

コンパイル

Objective-Cのファイルをコンパイルし、C.oを生成。

xcrun clang C.m -o C.o -c

そしてSwiftのファイル自体は

let c = C()

println(c.c)

コンパイル

Swiftのファイルをコンパイルし、S.oを生成。

xcrun swiftc -c S.swift -import-objc-header C.h -F /System/Library/Frameworks -I /usr/include

最終的に行うのは

今まで生成した、S.oとC.oを元に、appという実行ファイルが生成される。

xcrun swiftc -o app C.o S.o

結局最終的に出来るファイル群は。

C.h     C.m     C.o     S.o     S.swift app

実行

./app

先取り!Swift

先取り!Swift

はじめてのSwiftプログラミング (I・O BOOKS)

はじめてのSwiftプログラミング (I・O BOOKS)

詳解 Objective-C 2.0 第3版

詳解 Objective-C 2.0 第3版