SwiftPM:如何参考两个连接的C库设置Swift module.map
我正在尝试构建一个Swift包管理器系统包(module.modulemap) 提供两个system C库,其中一个包含另一个 也就是说,一个(比如libcurl)是一个基本模块,另一个C库包括 (比如:SwiftPM:如何参考两个连接的C库设置Swift module.map,swift,swift-package-manager,module-map,Swift,Swift Package Manager,Module Map,我正在尝试构建一个Swift包管理器系统包(module.modulemap) 提供两个system C库,其中一个包含另一个 也就是说,一个(比如libcurl)是一个基本模块,另一个C库包括 (比如:#包括“libcurl.h”)。在常规C端,这是可行的,因为 makefiles传递了正确的-I标志,一切都很好(我可以推测) 在SPM中也这样做,但我希望避免向SPM添加额外的标志) 所以我想到的是这个模块图: module CBase [system] { header "/usr/in
#包括“libcurl.h”
)。在常规C端,这是可行的,因为
makefiles传递了正确的-I
标志,一切都很好(我可以推测)
在SPM中也这样做,但我希望避免向SPM添加额外的标志)
所以我想到的是这个模块图:
module CBase [system] {
header "/usr/include/curl.h"
link "curl"
export *
}
module CMyLib [system] {
use CBase
header "/usr/include/mylib.h"
link "mylib"
export *
}
我在Swift软件包中导入了CBase
。
但当我尝试导入CMyLib
时,编译器会抱怨:
error: 'curl.h' file not found
这是可以理解的,因为编译器不知道在哪里查找
(尽管我认为使用CBase
会有所帮助)
有没有一种方法可以让它在不需要向服务器添加-Xcc-I
标志的情况下工作
构建过程
更新1:在一定程度上,这在
和
.
建议使用Package.swiftpkgConfig
设置。这似乎适合我的特定设置。但是,如果没有.pc
文件,它就是一只鸡和鸡蛋。我尝试在包中嵌入自己的.pc
文件,但系统包目录未添加到PKG\u CONFIG\u路径
(因此在编译相关模块时不会考虑)。因此,问题在于:如何在安装了lib但没有.pc
文件(只有头和lib)的环境中实现这一点