feelfree
feelfree

Reputation: 11763

How to run xcode from terminal?

My question is very simple: suppose there is an xcode project a.xcodeproj, could I open it with the command: xcode a.xcodeproj?

If I try this, I receive the following error message:

-bash: xcode: command not found

Upvotes: 71

Views: 97891

Answers (8)

kevherro
kevherro

Reputation: 1

I have a few functions in my .zshrc that accomplish what you're looking for:

cap () { tee /tmp/capture.out; }

ret () { cat /tmp/capture.out; }

x () {
    # Substitute .xcworkspace with .xcodeproj for your case.
    find . -type d -name "*.xcworkspace" -d 1 | cap
    xed "$(ret)"
}

Then, from the same directory as your *.xcodeproj, simply execute x, e.g.:

$ x

Upvotes: 0

Gobe
Gobe

Reputation: 2717

You could also simply run xed . in the project's root directory, apparently it will try to load a project in a hierarchical manner, i.e. the first that exists:

  1. the folder, if it's a Package (Xcode 11+)
  2. xcworkspace
  3. xcodeproj
  4. playground

which means you don't need to verify yourself the existing file structure in order to choose the best one to open.

Upvotes: 44

Nik
Nik

Reputation: 9462

I just type open *xcw*. This command looks up a workspace in the current directory and then opens is with Xcode.

Upvotes: 3

Dheeraj Gupta
Dheeraj Gupta

Reputation: 380

open terminal, then go to the path where Xcode is installed. Then, go to its "Contents/MacOS". And when you reach this folder, then type - sudo ./Xcode

Or else follow the following code: (you can use "sudo" if the user has privilege issue)

cd /  
cd Applications
cd Xcode.app
cd Contents/MacOS
sudo ./Xcode

Upvotes: 4

arango_86
arango_86

Reputation: 4435

incase, if you want to open a Xcode project from a workspace use the following command line.

user$ open -a xcode ProjectName.xcworkspace/

Upvotes: 2

SheetJS
SheetJS

Reputation: 22925

Xcode should be the default application for .xcodeproj files, so this should work:

$ open a.xcodeproj

If that opens a different application, you can force it to use xcode:

$ open -a Xcode a.xcodeproj

If you want the command xcode to work, you can just alias it:

$ alias xcode="open -a Xcode"

then you can just xcode a.xcodeproj (and add this to ~/.bash_profile)

Upvotes: 146

danielbeard
danielbeard

Reputation: 9149

Can't remember where I came across this script, but I use this ruby script for finding either a *.xcodeproj or *.xcworkspace file in the working directory and opening that file (without Xcode opening any previous projects)

#!/usr/bin/env ruby

# Open xcode without any previous projects being opened as well.
# We first look for a workspace, then a project in the current directory, opening the first that is found.

f = []
f.concat Dir["*.xcworkspace"]
f.concat Dir["*.xcodeproj"]

if f.length > 0
  puts "opening #{f.first}"
  `open -a /Applications/Xcode.app #{f.first} --args -ApplePersistenceIgnoreState YES`
  exit 0
end

puts "No Xcode projects found"
exit 1

Upvotes: 5

Eugene
Eugene

Reputation: 9474

Following command should do it:

open a.xcodeproj

Upvotes: 4

Related Questions