在使用 xcodebuild 从命令行构建应用程序后,如何 运行 一个 Cocoa 应用程序?
How do I run a Cocoa app after building it from the command line with xcodebuild?
我正在使用这样的 Xcode 项目从命令行构建 Mac OS X Cocoa 应用程序:
xcodebuild -scheme MyApp -configuration Debug
构建完成后如何运行它?
我写了一个脚本来做到这一点:
#!/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
在进程中查看其环境变量。)
我也遇到过同样的问题,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 " " | awk '{print }' )
}
BUILT_PRODUCTS_DIR=$(getBuildSetting "BUILT_PRODUCTS_DIR")
FULL_PRODUCT_NAME=$(getBuildSetting "FULL_PRODUCT_NAME")
open -a "$BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME" &
当然,这种方法使用工作区而不是项目,尽管它可以很容易地改变。此外,我刚刚使用 open
命令打开应用程序。
我正在使用这样的 Xcode 项目从命令行构建 Mac OS X Cocoa 应用程序:
xcodebuild -scheme MyApp -configuration Debug
构建完成后如何运行它?
我写了一个脚本来做到这一点:
#!/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
在进程中查看其环境变量。)
我也遇到过同样的问题,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 " " | awk '{print }' )
}
BUILT_PRODUCTS_DIR=$(getBuildSetting "BUILT_PRODUCTS_DIR")
FULL_PRODUCT_NAME=$(getBuildSetting "FULL_PRODUCT_NAME")
open -a "$BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME" &
当然,这种方法使用工作区而不是项目,尽管它可以很容易地改变。此外,我刚刚使用 open
命令打开应用程序。