Where is the Run Script and Build Phase in Xcode?

To get Carthage set up, the documentation says that you need to add a Run Script.

On your application targets’ “Build Phases” settings tab, click the “+” icon and choose “New Run Script Phase”. Create a Run Script in which you specify your shell (ex: bin/sh), add the following contents to the script area below the shell:

/usr/local/bin/carthage copy-frameworks

and add the paths to the frameworks you want to use under “Input Files”, e.g.:

$(SRCROOT)/Carthage/Build/iOS/Box.framework
$(SRCROOT)/Carthage/Build/iOS/Result.framework
$(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework

This script works around an App Store submission bug triggered by universal binaries and ensures that necessary bitcode-related files and dSYMs are copied when archiving.

However, I can't find the Build Phases tab anymore or Run Script in the Build Settings search. The Xcode 8 Release Notes mention

Xcode 8 provides completely rewritten AppleScript support. A new scripting dictionary provides the ability to automate Xcode workflows.

Does that mean there is no more Run Script? I looked at AppleScript but honestly it looks overwhelmingly complex. Do I need to learn AppleScript just to add the simple one liner that I used to do in Xcode?

/usr/local/bin/carthage copy-frameworks

It is still there. Make sure you click everywhere indicated in red in the image below.

enter image description here


You can configure different build phases to perform tasks when building a target.

To view the build phases, open the project editor and click Build Phases. To add build phases that don’t appear in the editor, click the Add button (+) and choose a build phase from the pop-up menu.

Project Editor

Use the project editor to view and edit your project and target settings, such as build options, target architectures, and code signing characteristics. In the main window, click the file icon () in the navigator area and select the project below. The project editor appears to the right of the navigator. Choose either the project or a target from the pop-up menu and use the tabs to switch to the different types of settings.

enter image description here

The Run script:

Runs a specified shell script during the build process. This script can reference build settings from the target, such as $(SRCROOT), the directory containing the target’s source files. This build phase also lets you provide a list of input and output files. The script always runs when no input and output files are provided. When input and output files are provided, the script only runs if it has never been run before, one of the input files has changed, or one of the output files is missing. This build phase can be enabled for all builds or only during an installation build, and maybe added multiple times per target.