Use of external C++ headers in Objective-C

meaning-matters picture meaning-matters · Jul 4, 2013 · Viewed 26.9k times · Source

In my iOS project I need to use an external library written in C++. The C++ header files are all in one directory.

I've added these C++ headers to my Xcode project, and also specified a header search path (in Build Settings).

The issue is that these C++ headers include each other using < > angle brackets. This results in:

'filename.h' file not found with <angled> include, use "quotes" instead.

The weird thing is that Xcode does not complain about all headers. Also the same header #include'd in one file is fine, while an issue when #include'd in another. I think this is caused by the fact that these headers #include each other.

  1. Why doesn't the search path work?
  2. Is there a way to resolve this without modifying these header files?

Thanks!

Answer

Martin R picture Martin R · Jul 4, 2013
#include <bla.h>

is meant for standard library or framework headers, and the search strategy Is different than that used for

#include "bla.h"

See for example

As a workaround, you can set the Xcode build setting "Always Search User Paths" to YES.