What does it mean when you check on "Recursive" in Header Search Paths What does it mean when you check on "Recursive" in Header Search Paths xcode xcode

What does it mean when you check on "Recursive" in Header Search Paths


If you give Xcode a path to use for headers, it will check that path when you use an #include or #import statement. If the file isn't there, it quits.

If you have the path set as "recursive", Xcode will search folders it finds there if it doesn't find the file.

Looks like this:

enter image description here


1) Enter your desired path for Header Search Paths, click enter.

2) Double click the path text that you entered.

3) On the right of the dialog box select recursive.


For those wondering, as I was, what the effect of choosing recursive for a Header Search Path is on the compiler command line, it's to generate a -I argument for every directory in the tree rooted at the given path. This can lead to very long compiler command lines which will make looking for anything else in there well nigh impossible. So it's worth considering how many directories are below the path you are specifying if you want to use recursive.

I tried specifying -I../path/to/subproject/** as a Compiler Flag for an individual file but that doesn't work (which is obviously why Xcode does the expansion itself).

(this is true for Xcode 9.4.1)