Xcode,使用自定义构建配置时链接框架不起作用

Posted

技术标签:

【中文标题】Xcode,使用自定义构建配置时链接框架不起作用【英文标题】:Xcode, Linking framework doesn't work when use custom build configuration 【发布时间】:2016-02-05 15:58:13 【问题描述】:

我有一个包含两个项目的工作区:名为“MainProject”的主项目,第二个是名为“PrivateFramework”的 CocoaTouch 框架。 PrivateFramework 链接到 MainProject 并且运行良好。

我在项目中也有 Podfile 文件,如下所示。你可以看到我在 PrivateFramework 和 MainProject 中使用了 XCGLogger pod。

source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'
use_frameworks!

workspace 'MainProject'

def shared_pods
    pod 'XCGLogger'
end

target 'PrivateFramework' do
    xcodeproj 'PrivateFramework/PrivateFramework.xcodeproj'
    shared_pods
end

target 'MainProject' do
    xcodeproj 'MainProject.xcodeproj', 'Development' => :debug, 'Production' => :release

    shared_pods
    pod 'Alamofire'
    pod 'Unbox'
    pod 'Locksmith'
end

安装 pod 后一切正常,因此 PrivateFramework 和 MainProject 正在编译并运行良好。

问题是当我尝试在 MainProject 中添加新的构建配置而不是调试和发布时。我添加了与发布和调试重复的生产和开发配置。

当我将新方案添加到名为“MainProject Development”的项目中时,我使用开发构建配置(称为开发)项目停止编译。 我的 PrivateFramework 中存在链接问题,无法看到 XCGLogger 以及此警告:

Target 'Pods-PrivateFramework' of project 'Pods' was rejected as an implicit dependency for 'Pods_PrivateFramework.framework' because its architectures 'i386' didn't contain all required architectures 'i386 x86_64'
为什么如果我使用自定义构建配置我的新方案不起作用 并且项目停止编译? 您有一些解决方法的建议吗?

在这里您可以找到具有该工作区的存储库:https://github.com/krystiansliwa/TestWorkspace

【问题讨论】:

【参考方案1】:

我从一位 CocoaPods 成员那里读到“你不能在同一配置中混合调试和发布”。您的 Podfile 对两个目标(PrivateFramework 和 MainProject)使用相同的配置(“开发”或“生产”)。所以 PrivateFramework 的隐式规则可能与 MainProject 的显式规则相冲突。

尝试使用:

xcodeproj 'PrivateFramework/PrivateFramework.xcodeproj', 'Development' => :debug, 'Production' => :release

【讨论】:

以上是关于Xcode,使用自定义构建配置时链接框架不起作用的主要内容,如果未能解决你的问题,请参考以下文章

“Italic”在Xcode -iOS中的UILabel中不起作用

为啥我的自定义 XML RPC 获取配置不起作用?

自定义 UITableViewCell 编辑模式不起作用

svg 图像内的自定义区域中的链接不起作用

由于文件间依赖关系,在 Xcode 中创建存档不起作用

iOS 8:在界面构建器中设置的自定义标签栏项目的选定图像不起作用