我試過只包括頭文件和c文件,但它們似乎被忽略是否可以使用Swift包管理器來編譯和包含C庫?
4
A
回答
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包的好例子
1
除了@ timbo的回答,這裏是關於t的完整文檔他的特點:
https://github.com/apple/swift-package-manager/blob/master/Documentation/SystemModules.md
系統模塊的支持有一些問題,目前,但我們有修復計劃。
相關問題
- 1. 是否可以修改Dymola的編譯器包含路徑?
- 2. Swift包管理器(「Swift Build」)在xcode中編譯得很好
- 3. 在Swift軟件包管理器中使用靜態C庫
- 4. swift包管理器鏈接動態庫
- 5. 使用Swift包管理器將Swift 3包添加到Xcode 8
- 6. AAR歸檔文件是否可以包含已編譯的類?
- 7. 從Xcode和Swift包管理器Git推
- 8. 是否可以包含.c文件中的函數而不編譯它?
- 9. 是否可以編寫批處理C#編譯器?
- 10. 是否可以強制編譯器使用「working」目錄的名稱來構建包含所有全名?
- 11. 編譯器編譯外部包含
- 12. 編譯器編譯也包含了嗎?
- 13. 是否可以使用Turbo C/C++編譯器生成DLL?
- 14. 是否可以使用Composer來管理Wordpress數據庫?
- 15. 使用libxml的庫的swift包管理器
- 16. __sync_bool_compare_and_swap編譯器標誌和包含
- 17. 我可以安全地使用#ifdef來知道是否包含C++ std標頭?
- 18. Windows軟件包管理器的C++庫
- 19. 是否可以在C/C++的其他庫中包含靜態鏈接庫?
- 20. CUDA是否包含真正的C++庫?
- 21. 是否可以在gcc編譯器中使用clang std庫?
- 22. C編譯器是否可以實現「不合理」的右移?
- 23. JavaScript中包含的C#代碼是否仍需編譯?
- 24. 無法使用C編譯器打開包含文件「Protocols.h」
- 25. 爲CUDA C/C++編譯器添加永久包含和庫路徑
- 26. 以C++格式包含庫
- 27. SSIS 2008:包配置是否可以包含該包未使用的屬性?
- 28. 是否可以在包含文件中使用包含文件作爲變量
- 29. PARAM-VALUE是否可以包含空格?
- 30. 服務是否可以包含活動?
如果它是'/ usr/local位置'中已有的系統庫,那麼它可以工作,但自定義C文件又如何呢?我應該將它編譯到一個庫中並將它們添加到'/ usr/local/lib'中? –
我會回答我自己的問題,對於自定義代碼,您需要創建一個動態庫並將它們放置在與系統庫相同的位置。然後可以在'module.modulemap'鏈接到它們。 –
庫也可以是靜態的。使用'swift build'你可以創建一個'.a'庫,然後將它拖放到Xcode中 - 假設Xcode使用的是與'swift build'相同的工具鏈 – timbo