Xcode 4 - 构建输出目录

时间:2010-11-20 15:55:02

标签: ide xcode4

我在Xcode4(beta 5)中设置/定位输出文件时遇到问题。它们被放置在~/Library/Developer/ugly_path/...的某个位置。我甚至无法在我的产品上选择“show in finder”。对于简单的C项目,Foundation工具甚至Cocoa包也是如此。调试工作正常。

您能否指出我在何处以及如何设置/构建输出目录? (我知道这听起来很愚蠢,我已经在Xcode3中编写了好几个月,但我无法在Xcode4测试版中找到它。)

非常感谢。

11 个答案:

答案 0 :(得分:341)

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

您有两个选择:

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

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

答案 1 :(得分:140)

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

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

答案 2 :(得分:29)

在Xcode 5中: Xcode 菜单> 偏好设置项目> 地点标签> 地点子标签> 高级... 按钮> 自定义选项。

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

答案 3 :(得分:13)

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

答案 4 :(得分:10)

保留派生数据,但使用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

答案 5 :(得分:8)

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

我使用它来分析我的iOS .app软件包,然后再安装它们,以确保没有包含任何杂散文件。

答案 6 :(得分:4)

对于想要从脚本中找到构建目录但又不想更改它的任何人,请运行以下命令以获取指向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/^ *//'

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

答案 7 :(得分:2)

如果您使用新的Xcode4工作区,则可以更改文件下的派生数据位置 - > 工作区设置......

答案 8 :(得分:1)

答案 9 :(得分:0)

在开始使用Xcode偏好设置之前要检查的另一件事是:

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

值应为: app

如果没有双击它并输入“app”而没有qoutes。

答案 10 :(得分:-1)

这太烦人了。打开项目,单击Target,Open Build Phases选项卡。检查您的Copy Bundle Resources是否有任何红色项目。