linux第三方模块参数,Swift on Linux – 导入第三方模块

我正在Linux上编写一些入门级的swift代码作为学习练习.

作为一般任务,我希望在我自己的代码中使用第三方Swift模块.我们称这个模块为“Foo”. Foo模块有一个Package.swift文件,在该目录中运行swift build之后,它创建了.build / debug / libFoo.so.

现在我想做两件事:

>能够在REPL中导入Foo.

>能够在我自己的swift程序中导入Foo,可能是通过链接这个共享对象.

我觉得这两个任务都是相关的,所以现在它们都是同一个问题.

对于1.,我不明白包裹如何被REPL“找到”.我尝试了swift -F .build / debug -framework Foo,但我得到了“没有这样的模块”错误.我也尝试了swift -I .build / debug,结果相同.

对于2.,我检查了swiftc –help并且有-L和-l选项但是我无法找到正确的方法来使用它们:

$swiftc main.swift -L ../foo.git/.build/debug -llibFoo.so

main.swift:1:8: error: no such module 'Foo'

import Foo

^

我正在使用/ Swift 2.2或3.0(使用游泳而不是快速构建2.2,因为没有快速构建 – 但它产生相同的输出我相信).

请注意,我了解swift build可以自动下载和构建第三方模块,但是我想知道如何合并磁盘模块,因为它们可能是我自己的工作进度模块.

编辑:我尝试了一个基于发现的swift3的小实验,你可以使用本地路径作为Package的依赖关系:列表中的url:参数,至少对于本地开发.

我创建了一个目录Bar和Bar / Package.swift:

import PackageDescription

let package = Package(name: "Bar")

我还创建了Bar / Sources / bar.swift,其中包含:

public func bar(arg: Int) -> Int {

return arg * 2

}

目的是模块Bar提供名为bar(arg :)的函数.

我做了一个git init,git add.,git commit -m“初始提交.”然后git tag 1.0.0为这个模块创建一个标记的本地git repo.

然后回到顶层,我创建了目录Foo和Foo / Package.swift:

import PackageDescription

let package = Package(

name: "Foo",dependencies: [ .Package(url: "../Bar",majorVersion: 1) ]

)

请注意../Bar的相对路径.

我还创建了Foo / Sources / main.swift:

import Bar

print(bar(arg: 11))

现在,当我快速构建Foo内部时,它克隆Bar并构建它.然而,我得到以下错误;没有这样的模块:

$swift build

Compile Swift Module 'Bar' (1 sources)

Compile Swift Module 'Foo' (1 sources)

.../Foo/Sources/main.swift:1:8: error: no such module 'Bar'

import Bar

^

奇怪的是,如果我再次执行完全相同的构建命令,我会得到一个不同的错误:

$swift build

Compile Swift Module 'Foo' (1 sources)

Linking .build/debug/Bar

.../Foo/Sources/main.swift:3:7: error: use of unresolved identifier 'bar'

print(bar(arg: 11))

^~~

我曾希望这可行.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值