Kenneth
Kenneth

Reputation: 4065

Xcode workspace reference project by environment variable

I need to reference a project in a Xcode workspace by an environment variable. An Xcode workspace file might look like this:

<Workspace
   version = "1.0">
   <FileRef
      location = "group:../../Some/Dir/SomeLibrary.xcodeproj">
   </FileRef>
   <FileRef
      location = "group:SomeApp/SomeApp.xcodeproj">
   </FileRef>
</Workspace>

I want the SomeLibrary project to be referenced by an environment variable, so that the workspace file and projects can be used in different developer environments (the lib project is shared between several different projects). Any ideas on how to do this? Is the XML-format documented somewhere?

Thanks! :)

Upvotes: 0

Views: 3270

Answers (2)

Kenneth
Kenneth

Reputation: 4065

I think I need to answer this myself. Based on my research it is not possible to use a dynamic location (environment variable, source tree, etc) on workspace projects.

Solution 1: You CAN achieve what I'm trying to do using symlinks. In my current workspace I've created one application-project, and a project entry which points to a symlink on the local file system. This way one can switch projects and have dynamic locations for the library-projects. I'm not sure if XCode treated this link properly when adding, so I manually added the project entry like this:

<FileRef
    location = "group:Libraries/SomeLibrary/SomeLibrary.xcodeproj">
</FileRef>

Where SomeLibrary (IMPORTANT: The folder SomeLibrary need to be the symlink, or else XCode wont be able to find the project contents) is a symlink to my static library project somewhere else on the local file system. This way, developers can have different paths to the library, and one can easily switch versions when needed.

Solution 2: Adding a static library project as a subproject and using cross-reference. For sub-projects, one can use Source Tree and use dynamic locations.

I haven't tested these solutions widely, so I'll come back with a reply after using it for a while.

Upvotes: 0

Michael Dautermann
Michael Dautermann

Reputation: 89549

In your XCode 4 Preferences, you'll see a "Locations" tab and in the "Source Trees" section you can put an environment-variable like location (which you can change from machine to machine). And you can use these settings to change paths for the libraries you're trying to include or reference in your projects.

It's not exactly the environment variable from the Terminal command line, but then again most people don't launch XCode from the Terminal and so you shouldn't expect to pick up your $PATH or other UNIX-style environment variables from double clicking on any app, much less the XCode IDE. It's a good alternative.

There's some more information in this related question and here's Apple's documentation on what they are and how to set them up (which is aimed at XCode 3 but the same concepts apply for XCode 4).

Let me know if I can provide more information, and I hope my answer helps!

Upvotes: 3

Related Questions