在Xcode项目中添加嵌入式框架时,如何区分Debug和Release?

时间:2015-03-11 12:39:04

标签: ios xcode macos cocoa frameworks

当我将一个框架添加到我的Xcode项目中时,要嵌入我的应用程序包中,如何为它的调试或发布创建两个不同的选项(我有两个版本的框架,一个编译为发布,一个用于调试)。

这就是我所指的:

enter image description here

如您所见,使用该配置,它只是复制CEF / Debug上的那个,无论它是在Release还是Debug模式下编译。

理想情况下,我想要一些像你一样的设置:

enter image description here

3 个答案:

答案 0 :(得分:1)

您可以在构建阶段中管理要嵌入自定义运行脚本的框架:

#!/bin/bash

# Your frameworks to embed
FRAMEWORK="Debug.framework"
if [ $CONFIGURATION == "Release" ]; then
    FRAMEWORK="Release.framework"
fi

# Destination to copy inside the app's frameworks folder
NAME=$(basename $FRAMEWORK)
DESTINATION=${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/$NAME

# Don't copy if it's already copied
if [ ! -d $DESTINATION ]; then
    # Copy the framework to the app's frameworks folder
    cp -r $FRAMEWORK $DESTINATION

    # Sign (if needed)
    codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements $DESTINATION
fi

答案 1 :(得分:0)

请注意,您可以通过为应用设置环境var DYLD_IMAGE_SUFFIX来引入不同的共享库(例如框架)。因此,如果你的(一个)框架内有CEF.framework / Versions / Curent / CEF和CEF.framework / Versions / Curent / CEF_debug并设置了env var DYLD_IMAGE_SUFFIX = _debug,它将为该运行加载第二个。

答案 2 :(得分:0)

你不需要。嵌入式框架将根据消费者应用程序的构建进行构建。 您可以通过在应用程序上添加构建架构(如Debug2)然后进行编译来测试它。您将收到嵌入式错误,因为它尝试使用Debug2架构进行编译,这在嵌入式框架中不可用。现在复制一些模式并将其命名为Debug2。它将构建。