How to add a global include path for xcode

35,580

Solution 1

According to Apple's Docs, you are able to provide a default for any build setting using an environment variable.

In this case, you'd want to set HEADER_SEARCH_PATHS. For some reason I don't understand, this doesn't work. It works fine for other build settings (for example, OTHER_CFLAGS), but not for HEADER_SEARCH_PATHS. You can see what the variable name for any setting is by opening the research assistant in the build settings window (book button on the bottom left.)

One var that does work is USER_HEADER_SEARCH_PATHS, which is just like what you want, but only works for paths in double quotes (not in angle brackets.)

So

#include "bar.h"

would work, but

#include <bar.h>

wouldn't.

The build settings plist referenced from the above article on environment variables should end up looking something like this:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>USER_HEADER_SEARCH_PATHS</key>
    <string>~/test</string>
</dict>
</plist>

Hope that helps.

Solution 2

For any of you blessed darlings that are trying to achieve this, or any other hack of ~/.MacOSX/environment.plist, aka global environmental variables in this post-Mountain-Lion world, check out EnvPane - An OS X preference pane for environment variables

EnvPane is a preference pane for Mac OS X 10.8 (Mountain Lion) that lets you set environment variables for all programs in both graphical and terminal sessions. Not only does it restore support for ~/.MacOSX/environment.plist in Mountain Lion, it also publishes your changes to the environment immediately, without the need to log out and back in. This works even for changes made by manually editing ~/.MacOSX/environment.plist, not just changes made via the preference pane.

enter image description here

Share:
35,580
Jesse Beder
Author by

Jesse Beder

Googler, mathematician. Check out Optia, a puzzle game for iOS, or yaml-cpp, a YAML parser/emitter library in C++.

Updated on August 02, 2022

Comments

  • Jesse Beder
    Jesse Beder almost 2 years

    I'd like to add ~/include to my include path for all projects while using Xcode, something like setting the environment variable CPLUS_INCLUDE_PATH in Linux. (See here for the related Linux question.)

    Is this possible in Xcode? I tried setting the above environment variable, but it doesn't seem to work. (And if it is possible, I'd like to also set related paths, like LIBRARY_PATH and LD_LIBRARY_PATH.)