I move to Xcode 10, in that the
settings in the .xcconfig files (particularly the header search paths)
We use .xconfig files and have moved from XC9 through to
XC11 and I haven't seen issues with settings in xcconfigs not being
honoured. However, the big change between the old & new build
systems, and the thing that is probably causing your problem, is that
"header maps" are off by default with the new build system (there is a
setting to revert to the old build system in the XC prefs).
"Header maps" was a feature where XC allowed you to
refer to an include file by name whatever its actual path, so you could
even though its path may have been
..../my-subdir/..../foo.h and whether or not you had
..../my-subdir/..../ in your header search paths.
In the Xcode 10 rel notes, Apple says
• The legacy header map
that was generated when the Always Search User Paths
(ALWAYS_SEARCH_USER_PATHS) setting was YES is not supported by the new
build system. Instead, set ALWAYS_SEARCH_USER_PATHS to NO and migrate to
using modern header include syntax. Add any needed header files that
are in the project repository to the Xcode project to ensure they
are available for use in #include (via the project wide header map). Use
quote-style include ("example.h") for project headers, and reserve
angle-bracket include (<example.h>) for system headers.
I had to do a bunch of work to fix this in our
1) set USE_HEADERMAP = NO and ALWAYS_SEARCH_USER_PATHS =
NO in our xcconfig to set the global defaults
2) go through each project and made sure they weren't
over-riding these settings
3) fix any "header file not found" errors by adding appr
search paths in the projects' build settings
NB USE_HEADERMAP is "NO" by default with new build
system; explicitly setting it to "NO' makes it behave the same way with
the old build system. If you don't need to switch back to XC9, you can
leave this out, I guess.
Also if you want to pass header paths defined in your
xcconfig or global project settings down to individual target settings,
you need to have
as one of the "paths" in the settings.
You may have gotten away with it with the old build
system since it would magically find the header file as long as it was
in the source tree somewhere.
Hope this helps