我试过只包括头文件和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