为libcurl库编写Swift封装时遇头文件缺失等问题求助
Swift封装libcurl时出现'curl/curl.h' file not found错误
我按照一份为libcurl创建Swift封装的教程操作,但在libcurl.h中执行#include <curl/curl.h>时,出现错误:'curl/curl.h' file not found。我已经通过brew在Mac上安装了curl。
我的项目结构如下:
swift_libcurl_email/ ├─ Package.swift ├─ Sources/ │ ├─ libcurl/ │ │ ├─ libcurl.h │ │ ├─ module.modulemap │ ├─ swift_libcurl_email/ │ │ ├─ swift_libcurl_email.swift ├─ Tests/ │ ├─ swift_libcurl_emailTests/ │ │ ├─ swift_libcurl_emailTests.swift
Package.swift 配置
import PackageDescription let package = Package( name: "swift_libcurl_email", products: [ .library( name: "swift_libcurl_email", targets: ["swift_libcurl_email"]), ], targets: [ .systemLibrary( name: "libcurl", providers: [ .brew(["curl"]), .apt(["libcurl4-openssl-dev"]) ] ), .target( name: "swift_libcurl_email", dependencies: [.target(name: "libcurl")]), .testTarget( name: "swift_libcurl_emailTests", dependencies: ["swift_libcurl_email", .target(name: "libcurl")]), ] )
module.modulemap 配置
module libcurl [system] { header "libcurl.h" link "curl" export * }
libcurl.h 内容
#ifndef libcurl_h #define libcurl_h #include <stdbool.h> #include <curl/curl.h> typedef size_t (*curl_func)(void * ptr, size_t size, size_t num, void * ud); CURLcode curl_easy_setopt_string(CURL *curl, CURLoption option, const char *param) { return curl_easy_setopt(curl, option, param); } CURLcode curl_easy_setopt_func(CURL *handle, CURLoption option, curl_func param) { return curl_easy_setopt(handle, option, param); } CURLcode curl_easy_setopt_pointer(CURL *handle, CURLoption option, void* param) { return curl_easy_setopt(handle, option, param); } #endif /* libcurl_h */
我发现一个实现同类功能的仓库,它能在我的机器上正常编译,但将其Package.swift复制到我的项目中时,出现错误:configuration of package 'swift_libcurl_email' is invalid; the 'providers' property can only be used with a System Module Package。
我希望不依赖第三方仓库,自行实现libcurl的Swift封装,并提供简化IMAP和SMTP操作的封装函数,恳请各位提供帮助,谢谢!
内容的提问来源于stack exchange,提问作者Horst Mueller
相关产品推荐
相关产品推荐

