我在下面的项目设置中为自定义构建配置编译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项目,因此它使用带有以下import语句的cocoalumberjack obj-c版本。

#import“CocoaLumberjack / CocoaLumberjack.h”

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

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

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

编译器
/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生成的文件.hmap
-F /用户/ someusername / Library / Developer / Xcode / DerivedData / MainProject-gslvjyjvbpzplkerotbufvukmpac / Build / Products / Release-iphonesimulator

> -F /用户/ someusername / Library / Developer / Xcode / DerivedData / MainProject-gslvjyjvbpzplkerotbufvukmpac / Build / Products / Release-iphonesimulator / CocoaLumberjack
-iquote /Users/someusername/Library/Developer/Xcode/DerivedData/MainProject-gslvjyjvbpzplkerotbufvukmpac/Build/Products/Release-iphonesimulator/CocoaLumberjack/CocoaLumberjack.framework/Headers
-c /用户/someusername/Anand/iOS/Practices/StackOverflow/MainProject/Subprojects/SubProject1/SubProject1/SubProject1.m
-o /用户/某用户名/库/开发人员/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”文件

导入“CocoaLumberjack / CocoaLumberjack.h”
    ^ 1 error generated.

有人可以帮助我解决自定义配置的此生成错误吗?请让我知道是否需要更多详细信息。

最佳答案

这应该可以解决您的问题:

第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

第三步

删除Podfile.lock
rm -rf Podfile.lock

第4步

再次运行安装:
pod install

第5步

如果您使用Lumberjack作为框架,则可以像这样导入:
@import CocoaLumberjack

希望它能解决,请让我知道结果...

注意:

另外,您也可以尝试NSLogger与Objective-C + Swift项目混合使用。

other alternatives

07-24 17:38