【问题标题】:Define custom module map file in cocoapods Podspec在 cocoapods Podspec 中定义自定义模块映射文件
【发布时间】:2015-11-23 05:36:03
【问题描述】:

我制作了一个自定义 module map 文件来处理 swift 项目中的 libxml 导入。 (non-modular include 错误)

如果我手动执行它会很好,但是当我尝试 pod lint 一个包含来自此自定义模块的导入的简单项目时,cocoapods 将找不到/解析该模块。

我试过s.module_map = "module/module.modulemap"

core.xcconfig = {
  'HEADER_SEARCH_PATHS' => '$(SDKROOT)/usr/include/libxml2 $(SRCROOT)/module $(SDKROOT)/usr/include/libresolv',
  'OTHER_LDFLAGS' => '"-lxml2"',
  'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES',
  'ENABLE_BITCODE' => 'NO',
  "SWIFT_INCLUDE_PATHS" => "$(SRCROOT)/module"
}

任何帮助将不胜感激。

【问题讨论】:

    标签: ios swift cocoapods podspec


    【解决方案1】:

    我通过设置pod_target_xcconfig 属性设法解决了这个问题。完整的部分如下所示:

    s.preserve_path = 'module/module.modulemap'
    s.module_map = 'module/module.modulemap'
    
    core.pod_target_xcconfig = { 'HEADER_SEARCH_PATHS' => '$(PODS_ROOT)/mypod/module' }
    core.xcconfig = { 'HEADER_SEARCH_PATHS' => '$(SDKROOT)/usr/include/libxml2 $(PODS_ROOT)/mypod/module' }
    

    【讨论】:

    • 嘿,我得到了非模块化错误。你能解释一下你在这里做了什么吗?谢谢
    • 这取决于你有一个模块化的标题。如果 #import 语法有错误,您可以尝试使用 @import 语法。在这里,您创建一个 module.modulemap 文件,在其中放置模块的声明(在我的情况下为 libxml)。然后将它添加到构建设置中以允许 Xcode 使用它,然后编译
    • 将 libxml2 位置从 pod_target_xcconfig 移动到 xcconfig 对我来说是诀窍。谢谢!
    • 您能否发布您的module.modulemap 文件以供完成?我用上面示例的所有可能变体尝试了pod lint,但我无法让它成功。你还需要用s.libraries = 'xml2'链接xml2吗?
    • @Loegic 你能发布你的 .modulemap 文件的内容吗?
    猜你喜欢
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多