【发布时间】:2016-12-13 13:55:50
【问题描述】:
这里是根目录的例子
├── Package.swift
└── Sources
├── Objc-cli
│ └── main.m
└── Swifty
└── MyStruct.swift
Swifty 模块只是一个简单的结构体
// MyStruct.swift
public struct MyStruct {
public var text = "Hello, World!"
public init() {
}
}
在Objc-cli 中,我尝试像这样链接 swift 模块。
// main.m
#import <Foundation/Foundation.h>
@import Swifty <---- Not found
int main() {
NSLog(@"Hello from Objc");
return 0;
}
这是Package.swift 的样子:
// Package.swift
import PackageDescription
let package = Package(
name: "MyTest",
targets: [
Target(name: "Swifty", dependencies: []),
Target(name: "Objc-cli", dependencies: ["Swifty"]),
]
)
遗憾的是,编译器无法识别objective-c 模块中的Swifty 模块。这是输出:
$ swift build
Compile Swift Module 'Swifty' (1 sources)
Compile Objc-cli main.m
/tmp/TestPackage/Sources/Objc-cli/main.m:10:9: fatal error: module 'Swifty' not found
@import Swifty
~~~~~~~^~~~~~
1 error generated.
<unknown>:0: error: build had 1 command failures
我错过了什么还是现在根本不可能?
【问题讨论】:
-
你试过删除
@import Swifty吗? -
@masters3d 我正在尝试将 swift 模块导入到 Objective-c 模块中。删除导入的目的是什么?
-
如果obj-c模块是swift包内的Test包,则不需要导入。
-
@masters3d objc 测试似乎不受 SPM 支持。我明白了:还不支持测试。:文件 /Library/Caches/com.apple.xbs/Sources/swiftpm/swiftpm-11750/Sources/Build/Command.link(ClangModule).swift,第 48 行 [1] 47975非法硬件指令 swift test 你还有什么建议吗?
标签: objective-c swift llvm swift-package-manager