OpenSSL 无法为 swift 框架编译

OpenSSL fails to compile for swift framework

在我创建的示例应用程序中,使用模块映射使用了 openssl 库。 以下是 module.modulemap 文件的结构。

framework module TestApp {
    umbrella header "TestApp.h"
    export *
    module * { export * }
    header "opensslv.h"
    header "x509.h"
    header "pkcs12.h"
    header "pem.h"
}

除此之外,我还在我的项目中添加了 include 和 lib 文件夹。 这种方法非常适用于 swift 示例应用程序。源代码编译并且 openssl api 公开给 swift.

现在是真正的问题。当我创建一个 swift 框架并遵循上述创建模块映射并将 include 和 lib 文件夹添加到项目结构的过程时。

我在“pkcs12.h”这一行收到错误。

  include <openssl/bio.h>

'openssl/bio.h' 找不到文件'

我在构建设置中添加了导入路径,Header 搜索路径。

由于 OpenSSL 是基于 C 的库,它不针对 swift 框架进行编译。 桥接 header 也不适用于 swift 框架。

有人可以在这里帮助我或了解为 swift 框架包含 OpenSSL 库的更好方法吗?

https://drive.google.com/file/d/1B4NFbTQG0JjSkZgFx0yy1jYw-lRxX1Oa/view?usp=sharing

我已经添加了示例项目link。在 TODO 部分,我想使用 OpenSSL 方法。

注意:我能够使用以下脚本编译 openSSL 库。

sed -E -i '' 's/#[[:space:]]*include <openssl\/(.*).h>/#include \"\.h"/' 
$SCRIPT_DIR/../Libraries/openssl/include/openssl/*.h

我修复了编译问题并能够访问 OpenSSL API。

我不得不对模块映射文件进行一些更改。

//
//  module.modulemap
//  NiksWay
//
//  Created by Suraj Gaikwad on 14/03/22.
//

framework module NiksWay {
    umbrella header "NiksWay.h"
    
    export *
    
    module * { export * }
    
    explicit module OpenSSL {
        
        header "pkcs12.h"
        header "pem.h"
        header "opensslv.h"
        header "err.h"
        
        link "libcrypto"
        link "openssl"
        
        export *
    }
}