Cocoapod - 在混合的Objective-C和Swift项目中为自定义配置构建错误

时间:2017-08-19 05:43:51

标签: ios objective-c swift cocoapods cocoalumberjack-swift

我面临构建错误,同时在下面的项目设置中编译自定义构建配置的Main项目。但是我没有得到Debug config的构建错误。

MainProject ( Mixed Objective-C and Swift)
 |_ SubProject1 ( Only Objective-C)

MainProject build configs :
 |_ Debug
 |_ Inhouse
 |_ Adhoc
 |_ Store

SubProject1 build configs:
 |_ Debug
 |_ Release

Pod文件:

workspace 'MainProject.xcworkspace'
platform :ios, '9.0'

target 'MainProject' do
   use_frameworks!

   def shared_pods
     # all the pods go here
     pod 'CocoaLumberjack/Swift'
   end

   target 'MainProject' do
     project 'MainProject'
     shared_pods
   end

   target 'SubProject1' do
     project 'Subprojects/SubProject1/Subproject1'
     shared_pods
   end
end

主项目和子项目都使用Cocoalumberjack。由于子项目是一个obj-c项目,它使用cocoalumberjack obj-c版本和以下import语句。

  

#import" CocoaLumberjack / CocoaLumberjack.h"

在构建调试配置时,没有构建失败。但是当构建Inhouse / Adhoc / Store配置时,它无法在头搜索路径中找到cocoalumberjack头文件。从构建日志中,我可以推断出,

构建主项目调试配置时,相同的配置用于构建窗格和子项目。因此,Pod被放置在Debug-iphonesimulator路径中。由于子项目具有Debug配置,它还引用Debug-iphonesimulator路径中的pod头。因此构建成功。

当构建Mainproject中的其他自定义配置时,比方说,Inhouse,Pods被放置在Inhouse-iphonesimulator路径中。由于子项目没有Inhouse配置,因此默认为发布配置。这导致在发布中间路径中搜索cocoalumberjack头文件,同时构建子项目。但是Cocoalumberjack标头在发布配置路径中不存在,但存在于Inhouse中间路径中。这会导致构建错误。请在下面找到构建错误日志。

  

CompileC   /Users/someusername/Library/Developer/Xcode/DerivedData/MainProject-gslvjyjvbpzplkerotbufvukmpac/Build/Intermediates/Subproject1.build/Release-iphonesimulator/SubProject1.build/Objects-normal/x86_64/SubProject1.o

     

/Users/someusername/Library/Developer/Xcode/DerivedData/MainProject-gslvjyjvbpzplkerotbufvukmpac/Build/Intermediates/Subproject1.build/Release-iphonesimulator/SubProject1.build/SubProject1-generated-files.hmap   -F /用户/ someusername /库/开发商/ Xcode中/ DerivedData / MainProject-gslvjyjvbpzplkerotbufvukmpac /建造/产品/推出-iphonesimulator

     

> -F /用户/ someusername /库/开发商/ Xcode中/ DerivedData / MainProject-gslvjyjvbpzplkerotbufvukmpac /编译/产品/释放-iphonesimulator / CocoaLumberjack   -iquote /Users/someusername/Library/Developer/Xcode/DerivedData/MainProject-gslvjyjvbpzplkerotbufvukmpac/Build/Products/Release-iphonesimulator/CocoaLumberjack/CocoaLumberjack.framework/Headers   -c /Users/someusername/Anand/iOS/Practices/StackOverflow/MainProject/Subprojects/SubProject1/SubProject1/SubProject1.m   -o /Users/someusername/Library/Developer/Xcode/DerivedData/MainProject-gslvjyjvbpzplkerotbufvukmpac/Build/Intermediates/Subproject1.build/Release-iphonesimulator/SubProject1.build/Objects-normal/x86_64/SubProject1.o

     

包含来自的文件   /Users/someusername/Anand/iOS/Practices/StackOverflow/MainProject/Subprojects/SubProject1/SubProject1/SubProject1.m:10:   /Users/someusername/Anand/iOS/Practices/StackOverflow/MainProject/Subprojects/SubProject1/SubProject1/Logger.h:9:9:   致命错误:' CocoaLumberjack / CocoaLumberjack.h'找不到文件

     

import" CocoaLumberjack / CocoaLumberjack.h"

    ^ 1 error generated.

有人可以帮我解决自定义配置的构建错误吗?如果需要更多细节,请告诉我。

1 个答案:

答案 0 :(得分:0)

这可以解决您的问题:

第1步

使用以下命令更新您的Podfile:

workspace 'MainProject.xcworkspace'
platform :ios, '9.0'
use_frameworks!

def shared_pods
  # all the pods go here
  pod 'CocoaLumberjack/Swift'
end

target 'MainProject' do
 project 'MainProject'
 shared_pods
end

target 'SubProject1' do
 project 'Subprojects/SubProject1/Subproject1'
 shared_pods
end

第2步

在终端上运行此命令以从项目中卸载pod,以便稍后进行全新安装:

pod deintegrate

第3步

删除Podfile.lock

rm -rf Podfile.lock

第4步

再次运行安装:

pod install

第5步

如果您正在使用Lumberjack作为框架,则可以导入如下:

@import CocoaLumberjack

希望它能解决,请告诉我结果......

注意:

另外,您也可以尝试NSLogger使用混合的objective-c + swift项目。

other alternatives