gpt4 book ai didi

objective-c - 从 OS X 命令行编译和链接 Swift 和 Objective C 代码

转载 作者:IT王子 更新时间:2023-10-29 05:20:55 26 4
gpt4 key购买 nike

从 OS X 命令行编译 Swift:

swift -sdk $(xcrun --show-sdk-path --sdk macosx) test.swift

从命令行编译 Objective C:

clang -lobjc -framework Foundation -c testObject.m

我可以将 -c 选项添加到任一编译器以生成 .o 文件。

如何将这两个源文件链接到一个应用程序中?

还是需要更多 build ?

最佳答案

TL;DR:最好使用 Xcode 工具,因为有很多事情要做。但也可以只使用命令行工具。

我会警告你,这是一个关于如何编译和运行 .m.swift 文件的快速而肮脏的示例,链接到 Cocoa 和 swift 运行时。我什至没有尝试遵循任何一方的最佳做法。

假设您有一个 Objective-C 类:

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

$ cat C.m
#import "C.h"

@implementation C

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

@end

并且您有一个使用该类的 Swift 文件:

$ cat S.swift
let c = C()

println(c.c)

你只需要将 Objective-C 和 Swift 文件分别编译成 .o 文件:

xcrun clang C.m -o C.o -c
# Be sure to import the bridge header (our only header in this example)
xcrun swiftc -c S.swift -import-objc-header C.h -F /System/Library/Frameworks -I/usr/include

如您所见,我们必须手动包含框架和 header 路径,让 Swift 编译器找到正确的文件(最好让它在 SDK 中查找它们,而不是在当前安装的文件中,顺便说一句(使用 xcrun --show-sdk-path))。

然后我们只需要链接它们,提取所有 Swift 和 Objective-C 运行时库。由于 swift 默认提取 Objective-C 库,我们甚至不需要指定太多:

xcrun swiftc -o app C.o S.o

看,我们的可执行文件已链接,我们可以运行它了!

$ ./app
Hello world!

这一切都非常有趣,但我建议不要直接使用这些工具,除非你实际上正在为你的项目制作一个以它们为目标的构建系统并且有充分的理由不使用 Xcode/xcodebuild.

关于objective-c - 从 OS X 命令行编译和链接 Swift 和 Objective C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24131476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com