使用 xcodebuild 从命令行构建 Cocoa 应用程序后,如何运行它?

Posted

技术标签:

【中文标题】使用 xcodebuild 从命令行构建 Cocoa 应用程序后,如何运行它?【英文标题】:How do I run a Cocoa app after building it from the command line with xcodebuild? 【发布时间】:2015-04-14 16:34:52 【问题描述】:

我正在使用这样的 Xcode 项目从命令行构建一个 Mac OS X Cocoa 应用程序:

xcodebuild -scheme MyApp -configuration Debug

构建完成后如何运行它?

【问题讨论】:

【参考方案1】:

我为此编写了一个脚本:

#!/bin/bash

x=$( xcodebuild -showBuildSettings -project MyApp.xcodeproj | grep ' BUILD_DIR =' | sed -e 's/.*= *//' )

DYLD_FRAMEWORK_PATH=$x/Debug DYLD_LIBRARY_PATH=$x/Debug $x/Debug/MyApp.app/Contents/MacOS/MyApp

(我通过从 Xcode 运行应用程序,然后在进程上ps -wwE -p 以查看其环境变量来解决这个问题。)

【讨论】:

【参考方案2】:

我也有同样的问题,a paid nerd 的回答很有帮助。

在做了一些研究之后,我确实找到了一个更清洁的解决方案,我将在这里提供一个答案。主要是解析代码更简洁,并且可重复用于检索其他构建设置。

#!/bin/bash

WORKSPACE_PATH='/Volumes/Development/MyApp/MyApp.xcworkspace'
CONFIGURATION='Debug'
SCHEME='macOS'

getBuildSetting()  
    echo $(xcodebuild -showBuildSettings -workspace "$WORKSPACE_PATH" -scheme "$SCHEME" -configuration "$CONFIGURATION" | grep " $1" | awk 'print $3' )


BUILT_PRODUCTS_DIR=$(getBuildSetting "BUILT_PRODUCTS_DIR")
FULL_PRODUCT_NAME=$(getBuildSetting "FULL_PRODUCT_NAME")
open -a "$BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME" &

当然,这种方法使用的是工作区而不是项目,尽管它可以很容易地更改。另外我刚刚使用open 命令打开了应用程序。

【讨论】:

以上是关于使用 xcodebuild 从命令行构建 Cocoa 应用程序后,如何运行它?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 4 UI 可以很好地构建应用程序,但命令行 xcodebuild 在代码签名时失败

xcode 8 xcodebuild 从命令行对多个配置文件进行手动代码签名

通过命令行构建 iOS 应用扩展

从 Jenkins 运行时 xcodebuild 失败(在终端中工作)

xcodebuild 比 Xcode 慢得多?

使用 xcodebuild 指定单个目标构建设置