2017-05-24 57 views
1

我建立的一個產生MacOS的命令行工具,具有相關聯的定製斯威夫特庫(.dylib)簡單迅捷的項目,但在編譯和運行它時,有一個數字,顯示形式的警告:當使用關聯的Swift庫構建一個Swift命令行工具時,爲什麼框架被嵌入?

objc [9532]:類_SwiftNativeNSEnumeratorBase同時在/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/libswiftCore.dylib(0x100cca3f0)和/ Users /中實現。 ./Build/Products/Debug/MyTool(0x1003e84c0)。將使用兩者之一。哪一個是未定義的。

掃描所產生的MyTool二進制文件表明,它包含的功能,所以我假定它在某種程度上通過靜態鏈接已經出爐。 .dylib期待它作爲一個共享庫存在,所以它看起來就是重複出現的地方。

我已經嘗試過很多項目和目標級別的設置,但似乎沒有人控制像核心框架那樣嵌入像顯式嵌入選項以外的靜態庫。

對於兩個目標總是嵌入Swift庫設置爲「否」。清理並構建仍會產生重複警告。

回答

0

它看起來像有幾件事,必須改變來解決這個:

  • 設置運行時搜索路徑包括/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx或相應的庫集。這些似乎包含比默認位置中存在的更新版本的Swift庫。
  • 設置與標準庫鏈接到「否」。
  • 通過拖動位於.../usr/lib/swift/macos位置的文件,手動指定要在命令行目標的「常規」選項卡上鍊接的庫。 Swift項目需要libswiftCore.dylib

由於C綁定,我還必須包括libc,但默認的(libc.tbc)就足夠了。

相關問題