【问题标题】:Xcode 4 - build output directoryXcode 4 - 构建输出目录
【发布时间】:2011-05-13 03:01:11
【问题描述】:

我在 Xcode4(测试版 5)中设置/定位我的输出文件时遇到问题。它们位于~/Library/Developer/ugly_path/... 的某个位置。我什至无法在我的产品上选择“在查找器中显示”。对于一个简单的 C 项目、Foundation 工具甚至 Cocoa 包也是如此。调试工作正常。

能否请您指出在哪里以及如何设置/构建输出目录? (我知道这听起来很愚蠢,我已经在 Xcode3 中编码了几个月,但在 Xcode4 beta 中我无法弄清楚)。

非常感谢。

【问题讨论】:

    标签: ide xcode4


    【解决方案1】:

    从顶部的 Xcode 菜单中,单击首选项,选择位置选项卡,查看构建位置选项。

    你有两个选择:

    1. 将构建产品放置在派生数据位置(推荐)
    2. 将构建产品放置在目标指定的位置

    更新: 在 xcode 4.6.2 上,您需要单击派生数据文本字段下方右侧的高级按钮。构建位置选择旧版。

    【讨论】:

    • 这个答案解释了为什么做出这个改变:stackoverflow.com/questions/5331270/…
    • 骄傲的会员,你是什么意思这些不在 Xcode 5 中?它们位于首选项 -> 位置 -> 派生数据 -> 高级。
    • 好的,所以我的构建进入.../XCode/DerivedData/ 文件夹,很简单。除了子文件夹似乎是AppName-asdflkjqwergoobledygook。由于我是从脚本构建的,因此我想实际 find 构建(这样我就可以打包它并通过 TestFlight 发送 :) 如何确定众多 MyAppName-xxxx-s 中的哪一个是对的吗?谢谢!
    • @Olie 您还可以将派生数据位置更改为您自己选择的路径
    • @Gerard:我可以,但这不是我想做的。我正在检查来自 repo 的源代码,然后通过命令行构建,我想知道构建的去向。我的构建脚本不适合以任何方式修改项目(例如,通过更改项目设置。)
    【解决方案2】:

    如果你从命令行构建,你可以通过以下方式设置输出目录:

    xcodebuild -workspace 'WORKSPACE_NAME.xcworkspace' \
               -scheme 'SCHEME_NAME' \
               -configuration 'Release' \
               -sdk iphoneos7.0 CONFIGURATION_BUILD_DIR='OUTPUT_DIRECTORY'
    

    【讨论】:

    • 为了使我的 sh 脚本正常工作,我需要删除单引号并只编写 CONFIGURATION_BUILD_DIR=/Users/...
    • @occulus,你是绝对正确的,因为这将在构建项目后无法构建测试目标,我认为如果你只是构建它可能没问题,但最好使用绝对路径!跨度>
    • 如果其他人试图解决类似的问题,我说服 XCode 6.x 使用以下组合将链接的二进制文件准确放置在需要的位置:/Users/moi/src/mozbuilds/xul3604/$(CONFIGURATION)/dist/bin
    【解决方案3】:

    在 Xcode 5 中:Xcode 菜单 > Preferences... 项 > Locations 选项卡 > Locations 子选项卡 > 高级... 按钮 > 自定义 选项。

    然后选择,例如,相对于工作区

    【讨论】:

    • 愿你活到一百岁,强壮,健康,先生。 谢谢
    【解决方案4】:

    如果您将 Xcode 4 构建位置设置设置为“将构建产品放置在派生数据位置(推荐),它应该位于 ~/Library/Developer/Xcode/DerivedData。此目录将您的项目作为目录,项目名称会附加一堆生成的字母,请仔细查看。

    【讨论】:

      【解决方案5】:

      保留派生数据,但使用 DSTROOT 指定目标。

      使用 DEPLOYMENT_LOCATION 强制部署。

      也使用未记录的 DWARF_DSYM_FOLDER_PATH 复制 dSYM。

      这允许您使用从 xcodebuild 派生的数据位置,而不必做古怪的事情来查找应用程序。

      xcodebuild -sdk "iphoneos" -workspace Foo.xcworkspace -scheme Foo -configuration "Debug" DEPLOYMENT_LOCATION=YES DSTROOT=tmp DWARF_DSYM_FOLDER_PATH=tmp build
      

      【讨论】:

        【解决方案6】:

        您始终可以通过查看构建日志查看器并将那里的路径复制到终端窗口中来找到构建目录。

        我使用它在安装之前分析我的 iOS .app 包,以确保不包含任何杂散文件。

        【讨论】:

        • 我在哪里可以找到这个构建日志??在 Xcode 帮助中搜索“构建日志”返回 0 个结果。
        • Nm,找到了“Log Navigator”,看起来像个对话泡泡。
        【解决方案7】:

        对于想要从脚本中查找构建目录但又不想更改它的任何人,运行以下命令以获取指向 DerivedData 中文件夹的所有构建设置的列表:

        xcodebuild -showBuildSettings | grep DerivedData
        

        如果您运行自定义目标和方案,请将它们也放在那里:

        xcodebuild -workspace "Foo.xcworkspace" -scheme "Bar" -sdk iphonesimulator -configuration Debug -showBuildSettings | grep DerivedData
        

        查看输出以找到您想要的设置输出,然后:

        xcodebuild -showBuildSettings | grep SYMROOT | cut -d "=" -f 2 - | sed 's/^ *//'
        

        最后一部分在等号处剪掉字符串,然后在开头剪掉空格。

        【讨论】:

          【解决方案8】:

          如果您使用新的 Xcode4 Workspaces,您可以在 File -> Workspace settings... 下更改 Derived Data Location p>

          【讨论】:

            【解决方案9】:

            【讨论】:

            • 不,这与派生位置/传统(每个目标)位置行为无关
            • 是的。无论哪种方式都可以。来自文档:“目录路径。标识用于放置活动构建配置的所有构建相关文件的目录。”
            • 不。不是 xcode4 它取决于Xcode > Preferences > Locations > Derived data 设置,如投票最多的答案中所述。 + 您所指的文档上次更新时间是 2010 年
            • 我实际上已经使用此设置来配置带有来自 xcodebuild 的 xcode4 的构建目录。试一试。
            • 好吧,我已经尝试过使用 Xcode 4.3.1(来自 IDE)并且在不更改全局设置的情况下,产品是在 ~/Library/Developer/Xcode/DerivedData/ 的某个位置构建的,而不是在我用 CONFIGURATION_BUILD_DIR 指定的目录中。如果我希望CONFIGURATION_BUILD_DIR 受到尊重,我必须将 Xcode 派生数据首选项切换为“Legacy”
            【解决方案10】:

            在开始使用 Xcode 首选项之前要检查的另一件事是:

            选择您的目标并转到构建设置>打包>包装器扩展

            应该有的值:app

            如果没有双击它并键入不带引号的“app”。

            【讨论】:

              【解决方案11】:

              这太烦人了。打开您的项目,单击目标,打开构建阶段选项卡。检查您的 Copy Bundle Resources 是否有任何红色项目。

              【讨论】:

                猜你喜欢
                • 2013-10-18
                • 1970-01-01
                • 2013-09-20
                • 1970-01-01
                • 2016-02-12
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多