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.)
Build settings are not environment variables, and environment variables are not build settings. Setting an environment variable will not affect Xcode builds.
USER_HEADER_SEARCH_PATHS
is a build setting, and putting a list of paths into it will achieve what you want. If you set the value in a target's inspector, it will take effect for only that target (and only for the Build Configurations you designate). If you set it in the Project inspector, it will take effect in all targets in the project, unless a target overrides it with its own setting.For paths that are specific to your machine, you should probably define a Source Tree in the Xcode Preferences, such as
LOCAL_INCLUDE = ~/include
. Then defineUSER_HEADER_SEARCH_PATHS = $(LOCAL_INCLUDE)
in the project. This way, other people can open your project and build it by setting their Source Tree to the particular location of the local includes on their machine, without having to change the project file.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 forHEADER_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
would work, but
wouldn't.
The build settings plist referenced from the above article on environment variables should end up looking something like this:
Hope that helps.
Just select a .c or .m file in your "Groups & Files Tab" and choose "get Info" through RMB, then under "build" you can add additional Compiler Flags like -I for additional include searchpath.
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 variablesAdd the
HEADER_SEARCH_PATHS
build setting to your Xcode project. This setting takes a space separated list of paths and if the path ends in a double star (**
), it will search subdirectories recursively. So to answer for your example, setHEADER_SEARCH_PATHS
to:If you had a number of paths to include, you would set it to something like: