2015-08-28 153 views
6

我做了一个自定义的module map文件来处理在swift项目中导入libxml。 (non-modular include错误)在cocoapods中定义自定义模块映射文件Podspec

它的工作巨大的,如果我做手工,但cocoapods不会找到/解决模块,当我尝试pod lint含有从该自定义模块的导入一个简单的项目。

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

core.xcconfig = { 'HEADER_SEARCH_PATHS'=>“$(SDKROOT)的/ usr /包括/ libxml2的$(SRCROOT)/模块$(SDKROOT)沿着在/ usr /包括/ libresolv', 'OTHER_LDFLAGS'=>'“-lxml2”','CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES'=>'YES','ENABLE_BITCODE'=>'NO',“SWIFT_INCLUDE_PATHS”=>“$(SRCROOT)/ module”}

任何帮助,将不胜感激。

回答

12

我设法通过设置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' } 
+0

嘿,我得到了非模块化的错误。你能解释一下你在这里做了什么吗?谢谢 –

+0

它取决于头你有一个模块头。如果#import <>语法有错误,您可以尝试使用@import语法。在这里你创建一个module.modulemap文件,在其中放置模块的声明(在我的情况下是libxml)。然后将其添加到您的构建设置以允许Xcode使用它,并编译 – Loegic

+1

将libxml2位置从'pod_target_xcconfig'移动到'xcconfig'对我来说是个诀窍。谢谢! – diegoreymendez