xcrun

Run or locate development tools and properties.

xcrun [--sdk <SDK name>] --find <tool name>

xcrun [--sdk <SDK name>] <tool name> ... tool arguments ...

<tool name> ... tool arguments ...

locate or invoke developer tools from the command-line, without requiring modifying Makefiles or otherwise take inconvenient measures to support multiple Xcode tool chains.

The tool xcode-select(1) is used to set a system default for the active developer directory, and may be overridden by $DEVELOPER_DIR

The SDK which will be searched defaults to the most recent available SDK, and can be specified by $SDKROOT or --sdk (which takes precedences over SDKROOT). When used to invoke another tool (as opposed to simply finding it), xcrun will provide the absolute path to the selected SDK in the SDKROOT environment variable.

Usage

with --find , as in xcrun [--sdk ] --find tool name, the absolute path to the tool (in the provided SDK, if given) will be printed.

without --find the name of a tool is required and the tool will be executed with the provided arguments.

When used as the target of a symbolic link, it derives the tool name to use from the name it was invoked under, and then executes that tool.

-v
--verbose
Add verbose information on how the tool lookup is performed.
-n
--no-cache
Don't consult the cache when looking up values. In effect, causes the cache entry to be refreshed.
-k
--kill-cache
Removes the cache. Causes all values to be re-cached.
--sdk Specifies which SDK to search for tools. If no --sdk argument is provided, then the SDK used will be taken from the SDKROOT environment variable, if present. Use xcodebuild -showsdks to list the available SDK names.
--toolchain Specifies which toolchain to use to perform the lookup. If no --toolchain argument is provided, then the toolchain to use will be taken from the TOOLCHAINS environment variable, if present.
-l
--log
Print the full command line that is invoked.
-f
--find
Enable "find" mode, in which the resolved tool path is printed instead of the tool being executed.
-r
--run
Enable "run" mode, in which the resolved tool path is executed with any provided additional arguments. This is the default mode.
--show-sdk-path Print the path to the selected SDK.
--show-sdk-version Print the version number of the selected SDK.
--show-sdk-build-version Print the build version number of the selected SDK.
--show-sdk-platform-path Print the path to the platform for the selected SDK.
--show-sdk-platform-version Print the version number of the platform for the selected SDK.

ENVIRONMENT

$CPATH modified by xcrun to include /usr/local/include when an explicit SDK is not requested via environment variable nor command line argument and neither -nostdinc nor -nostdsysteminc are present. $DEVELOPER_DIR Overrides the active developer directory. When DEVELOPER_DIR is set, its value will be used instead of the sys- tem-wide active developer directory. $LIBRARY_PATH modified by xcrun to include /usr/local/lib when an explicit SDK is not requested via environment variable nor command line argument and -Z is not being passed to the linker. $SDKROOT default SDK to be used when looking up tools (some tools may have SDK specific versions). This environment variable is also set by xcrun to be the absolute path to the user provided SDK (either via SDKROOT or the --sdk option), when it is used to invoke a normal developer tool (build tools like xcodebuild or make are exempt from this behavior). For example, if xcrun is used to invoke clang via: xcrun --sdk macosx clang test.c then xcrun will provide the full path to the macosx SDK in the environment variable SDKROOT. That in turn will be used by clang(1) to automatically select that SDK when compiling the test.c file. $TOOLCHAINS default toolchain to be used when looking up tools (for tools which are toolchain specific).

xcrun_log Same as --log.

xcrun_nocache Same as >--no-cache.

xcrun_verbose Same as --verbose. EXAMPLES xcrun --find clang Finds the path to the clang binary in the default SDK. xcrun --sdk iphoneos --find texturetool Finds the path to the texturetool binary in the iOS SDK. xcrun --sdk macosx --show-sdk-path Prints the path to the current Mac OS X SDK. xcrun git status Locates the git command and then executes it with a single argument ("status"). xcrun simctl delete unavailable

usage: simctl [--set ] [--profiles ]  ...
       simctl help [subcommand]
Command line utility to control the Simulator

For subcommands that require a  argument, you may specify a device UDID
or the special "booted" string which will cause simctl to pick a booted device.
If multiple devices are booted when the "booted" device is selected, simctl
will choose one of them.

Subcommands:
    create              a new device.
    clone               an existing device.
    upgrade             a device to a newer runtime.
    delete              a device or all unavailable devices.
    erase               a device's contents and settings.

    pair                Create a new watch and phone pair.
    unpair              Unpair a watch and phone pair.
    pair_activate       Set a given pair as active.

    boot                Boot a device.
    shutdown            Shutdown a device.
    rename              Rename a device.
    getenv              Print an environment variable from a running device.
    openurl             Open a URL in a device.
    addmedia            Add photos, live photos, videos, or contacts to the library of a device.
    install             Install an app on a device.
    uninstall           Uninstall an app from a device.
    get_app_container   Print the path of the installed app's container
    launch              Launch an application by identifier on a device.
    terminate           Terminate an application by identifier on a device.
    spawn               Spawn a process by executing a given executable on a device.
    list                List available devices, device types, runtimes, or device pairs.
    icloud_sync         Trigger iCloud sync on a device.
    pbsync              Sync the pasteboard content from one pasteboard to another.
    pbcopy              Copy standard input onto the device pasteboard.
    pbpaste             Print the contents of the device's pasteboard to standard output.
    help                Prints the usage for a given subcommand.
    io                  Set up a device IO operation.
    diagnose            Collect diagnostic information and logs.
    logverbose          enable or disable verbose logging for a device

xcrun --verbose --log simctl delete unavailable
xcrun: note: PATH = '/Volumes/DATA/dgerman/.bin:/Library/Developer/CommandLineTools/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/MacOS:/opt/X11/bin:/usr/libexec:/Volumes/DATA/dgerman/.gem/ruby/2.3.0/bin:/usr/local/bin:/Volumes/DATA/usr/local/bin'
xcrun: note: SDKROOT = '/'
xcrun: note: TOOLCHAINS = ''
xcrun: note: DEVELOPER_DIR = '/Applications/Xcode.app/Contents/Developer'
xcrun: note: XCODE_DEVELOPER_USR_PATH = ''
xcrun: note: xcrun_db = '/var/folders/rr/jvwb6c9j2h18lzc28kzws_940000gn/T/xcrun_db'
xcrun: note: xcrun via simctl (xcrun)
xcrun: note: database key is: simctl|/||/Applications/Xcode.app/Contents/Developer|
xcrun: note: lookup resolved in '/var/folders/rr/jvwb6c9j2h18lzc28kzws_940000gn/T/xcrun_db' : '/Applications/Xcode.app/Contents/Developer/usr/bin/simctl'
/Applications/Xcode.app/Contents/Developer/usr/bin/simctl delete unavailable



DIAGNOSTICS When xcrun is invoked with the name xcrun, the options --log and --verbose are useful debugging aids. The option --no-cache can be used to bypass cache lookup, but often at a significant cost in performance. When xcrun has taken the place of another tool, the arguments are those of the tool replaced, and the various xcrun options can't be used. In this case, use the specific environment variables instead. SEE ALSO xcodebuild(1), xcode-select(1)