2015-08-28 78 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