Say the structure for project 'mylib' is:
project/include/mylib.h
project/include/header1.h
project/include/header2.h
project/src/file.c
With the resulting framework structure something like:
mylib/Versions/A/mylib
mylib/Versions/A/Headers/mylib.h
mylib/Versions/A/Headers/header1.h
mylib/Versions/A/Headers/header2.h
The new requirements wants only angle brackets in all framework headers, but that doesn't work for internal dependencies. Say 'header2.h' were to try including 'header1.h" with something like:
#include <mylib/header.h>
That include path will be incorrect when building the project--there is no real 'mylib' directory. Maybe Xcode hacks the include paths to magically work, but other toolchains have no way of doing that.
Also, if there's an installed version of the headers in '/usr/local/include/mylib', a normal C toolchain will try to include 'header1.h' from there instead of from the project directory.
It seems to me that Apple (or the clang devs) have redefined what angle bracket includes mean within the context of a framework, and the new definition is not compatible with non-Xcode toolchains.
I currently have the warning disabled, but if at all possible I'd like to be creating properly structured frameworks.
Topic:
Developer Tools & Services
SubTopic:
Xcode
Tags: