2016-11-27 132 views
0

Swift新手在這裏,使用swift 3在Linux上使用包管理器。導入本地快捷模塊

我有一個軟件包Regulate,可執行文件和一個兄弟軟件包Utils,旨在成爲一個庫。 Utils/Sources有一個TextReader.swift文件,TextReader類和它的init函數都是公共的。 utils目錄是一個git回購,在所描述調節/ Package.swift:

dependencies: [.Package(url: "../Utils", "1.0.0")] 

我試圖3點的方式來實例化在調節程序的TextReader對象,並得到3個錯誤消息:

import Utils 
... 
let reader = TextReader(filename: name) 

誤差:使用未解決的識別符 '的TextReader' 的

import Utils 
... 
let reader = Utils.TextReader(filename: name) 

錯誤:模塊 '的Utils' 沒有構件名爲 '的TextReader'

import class Utils.TextReader 

錯誤:在模塊

沒有這樣的DECL它看起來像庫模塊需要一些額外的結構來聲明其出口,也許。

我需要在這裏做什麼?謝謝!

+0

'Utils/Package.swift'是什麼樣的?你能在''Utils'獨立版上運行'swift build',在'Package.swift'中用'Utils'依賴''Regulate',但沒有代碼導入'TextReader'? –

+0

Utils/Package.swift只有名稱:「Utils」這一行,它似乎構建了獨立的 - 沒有抱怨,並在.build中輸出合理的輸出。此外,Regulate使用Utils依賴項成功構建,並在代碼中導入Utils,但不引用TextReader。 – user1148758

+0

Gotcha。當你構建'Regulate'時,你會看到一行它正在克隆'Utils',並且你看到'Utils'源代碼和你的'Regulate/Packages'子目錄?另外,如果您沒有使用'swift package init'開始使用'Utils',那麼可能需要對其進行備份,嘗試新的包初始化,並將需要的代碼複製回生成的包結構中。 –

回答

0

D'oh!這看起來像名稱衝突。

當我使用Utils2而不是Utils時,它工作正常。有了Utils,它克隆並構建了其他模塊,但是當我引用它時,顯然是轉到了某個系統模塊。