从OS X命令行编译Swift:
swift -sdk $(xcrun --show-sdk-path --sdk macosx) test.swift
从命令行编译目标C:
clang -lobjc -framework Foundation -c testObject.m
我可以将-c选项添加到任一编译器以生成.o文件。
如何将这两个源文件链接到一个应用程序中?
还是需要建造更多?
TL; DR :最好使用Xcode工具,因为有很多事情要进行。但是也可以只使用命令行工具。
我会警告您,这是一个如何编译和运行与Cocoa和Swift运行时链接的.m
和.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
如您所见,我们必须手动包含框架和标头路径,以使Swift编译器找到正确的文件(最好是在SDK中而不是当前安装的文件btw中查找它们)xcrun --show-sdk-path
))。
然后,我们只需要链接它们,即可拉出所有Swift和Objective-C运行时库。由于swift
默认情况下提取了Objective-
C库,因此我们甚至不需要指定太多:
xcrun swiftc -o app C.o S.o
看,我们的可执行文件已链接,我们可以运行它!
$ ./app
Hello world!
这都是非常有趣的,但是我建议不要直接使用这些工具,除非您实际上是为您的项目构建针对它们的项目构建系统,并且有充分的理由不使用Xcode /
xcodebuild
。
问题内容: 尝试1,香草链接到图书馆 我正在尝试使用修补版本的OpenSSL(因此DTLS更易于使用)。OpenSSL在 ./include/openssl子文件夹有大量的头文件(我认为应该如此): GCC链接到include文件夹,并给我一个错误-它找不到SSL。我或多或少地在使用与别人相同的东西。这在OSX(10.6)上有效,但在Ubuntu上无效: 尝试2,符号链接到/ usr / incl
问题内容: 如何在Mac和Linux上从命令行编译和上传Arduino 草图?我已经安装了Arduino编程环境。哪里有一些示例makefile? 问题答案: 从1.5.0开始,通过标志直接支持在arduino可执行文件上直接在命令行(在Windows,Mac和Linux上)编译和上传草图(与C / C ++源代码有关)。 一个ino可以被编译和上传 文献资料
问题内容: 我想知道如何从Windows Shell中使用JavaFX编译代码。 我在以下代码fxservidor.java: 问题答案: Oracle Java 8 如果您使用的是Oracle Java 8或更高版本(如cayhorstmann在其回答中所指出),则JavaFX类现在位于Oracle Java实现的默认运行时类路径上。您可以直接运行javac,并java在你的程序和JavaFX类
主要内容:SDKMAN!,创建和运行第一个程序,hello.kt,运行 REPL(交互式解释器),使用命令行执行脚本Kotlin 命令行编译工具下载地址:https://github.com/JetBrains/kotlin/releases/tag/v1.1.2-2,目前最新为 1.1.2-2。 你可以选择一个最新的稳定版下载。 下载完成后,解压到指定目录,然后将 bin 目录添加到系统环境变量。bin 目录包含编译和运行 Kotlin 所需的脚本。 SDKMAN! 在 OS X、Linux、
Kotlin 命令行编译工具下载地址:https://github.com/JetBrains/kotlin/releases/tag/v1.1.2-2,目前最新为 1.1.2-2。 你可以选择一个最新的稳定版下载。 下载完成后,解压到指定目录,然后将 bin 目录添加到系统环境变量。bin 目录包含编译和运行 Kotlin 所需的脚本。 SDKMAN! 在 OS X、Linux、Cygwin、F
问题内容: 我想这样链接命令: 由于80列长度的原因,我想将链分成几行,但是Go不会让我编译它: 我能做什么 ? 问题答案: 正如FUZxxl指出的那样,您的问题是分号的自动插入。规格说明: 当输入被分解为令牌时,如果该行的最终令牌为,则将分号自动插入到非空白行的末尾的令牌流中。 标识符 整数,浮点数,虚数,符文或字符串文字 关键字之一break,continue,fallthrough或retu