2015-12-14 88 views

回答

3

這是可能的,但通常的做法是定義一個名爲'Csomething'的單獨包,其中只需將C圖書館名稱與大寫C並在Github上託管。 C程序包只需要包含一個空的Package.swift文件和一個module.modulemap。在module.modulemap你指的是C頭文件在哪裏:

 
module CPackage [system] { 
    header "/usr/local/include/myheader.h" 
    link "libraryname" 
    export * 
} 

因此,在原來的包,你只需把一個依賴於對在CPackage如:

 
.Package(url: "https://github.com/aleph7/CHDF5.git", majorVersion: 1) 

,然後你可以import CPackage

https://github.com/aleph7/CHDF5是一個簡單的C包的好例子

+0

如果它是'/ usr/local位置'中已有的系統庫,那麼它可以工作,但自定義C文件又如何呢?我應該將它編譯到一個庫中並將它們添加到'/ usr/local/lib'中? –

+0

我會回答我自己的問題,對於自定義代碼,您需要創建一個動態庫並將它們放置在與系統庫相同的位置。然後可以在'module.modulemap'鏈接到它們。 –

+0

庫也可以是靜態的。使用'swift build'你可以創建一個'.a'庫,然後將它拖放到Xcode中 - 假設Xcode使用的是與'swift build'相同的工具鏈 – timbo

相關問題