72

How do I use a relative path in Xcode project settings?

Almo
  • 15,538
  • 13
  • 67
  • 95
Shay
  • 2,595
  • 3
  • 25
  • 35
  • For this decade old question! A weird issue seems to have come up in Xcode 11 ... https://stackoverflow.com/questions/58954843/how-did-contents-xcworkspacedata-weird-absolute-path-issue-happen – Fattie Nov 20 '19 at 12:55

6 Answers6

103

All paths in Build Settings are assumed relative to the directory that contains the .xcodeproj file. Use the standard Unix path tokens

.   project directory
..  parent directory

So if your project file is trunk/Mac/proj.xcodeproj, and your headers are in trunk/Headers/foo.h, you would add ../Headers to your Header Search Paths.

cdespinosa
  • 20,661
  • 6
  • 33
  • 39
  • 4
    what about libraries? can I have my .a files outside the project and add their path relatively to the project? – Ashish Awaghad Jan 09 '14 at 09:23
  • Yes, see here https://www.chilkatsoft.com/xcode-link-static-lib.asp. Adding it this way will make sure the linker gets passed the -lmylib flag. Then add the path to this library in Build Settings->Search Paths->Library Search Paths – mondaugen Mar 14 '18 at 16:19
43

Also there are two paths: $SRCROOT and $SDKROOT.

Community
  • 1
  • 1
Mike Chen
  • 1,113
  • 8
  • 9
  • 1
    using 2 dots, i.e: "../someFolder" will give you your workspace folder while $SRCROOT will only gives you the project folder (which could be inside the workspace folder). – OhadM Aug 19 '15 at 06:47
7

In the upper left corner next to the build/stop buttons, click on the name of your project and Edit Scheme...

In the left column, click on Run

Click on Options

Put a check next to Working Directory: Use custom working directory.

You can then change the relative path to anywhere you want.

EDIT: This is for Xcode 4.1

ulu5
  • 439
  • 7
  • 11
  • in the Run Options , there is only 2 options: `Core Location` & `Application Data`. No `Working Directory`. xCode 4.3 – Raptor May 25 '12 at 09:32
  • 1
    In xCode 4.5 this option is in Product>Edit Scheme ..... This worked for me, thanks. – yogi Dec 08 '12 at 12:51
  • i second @ShivanRaptor.. there is no working directory in xCode 4.5 – abbood Jan 16 '13 at 09:18
  • i reopened this issue [here](http://stackoverflow.com/questions/14355173/how-to-make-xcodeproj-file-relative-in-xcode-4-5) – abbood Jan 16 '13 at 09:36
4

For Xcode 5:

Click on Product -> Scheme -> Edit Scheme.

Then follow ulu5's instructions: Click "Run", Click on "Options", and check the box "Use custom working directory."

3

The various answers currently here which recommend setting the working directory when executing a project by editing the scheme and then choosing whatever directory you want are missing what seems like a key part of the question: Relative Path. If you just use the file navigator in the UI you'll get an absolute path, likely with your own home directory in it, which isn't so good if the project you're working on is shared with other people. To specify a working directory relative to the project folder in there, find the "Working Directory" field in the scheme (In XCode 10.1, that's Product | Scheme | Edit Scheme, then Options, then check "Use Custom Working Directory"), and use $PROJECT_DIR to get the path relative to the project.

orion elenzil
  • 4,484
  • 3
  • 37
  • 49
0

Using Xcode 9:

It may be intended for Xcode to always use relative file paths based on the directory that contains the xcodeproj, but sometimes this does not seem to be true, and in my case this may have been due to the fact that the project (directory and all) was copied from an earlier version. I had to do:

Target(top left)->Edit Scheme->Use Custom Working Directory

and then specify to use the directory containing my project file.

shodak
  • 65
  • 10