I'm having a myriad of problems with Xcode 4 and nested projects that worked just well under Xcode 3.2. Here's a very basic one I cannot solve:
I'm building a cocoa framework that requires another cocoa framework for which I have the source. So I perform the usual steps:
- Drag the
.xcodeproj
file of the required framework into my main framework project - In my main framework under TARGETS > MyFramework > Build Phases > Target Dependencies: Add the nested project's target
- Make sure the header files of the nested framework are public
- In Xcode Settings > Locations > Build Location I have it set to Place build products in derived data location (recommended)
- Build products path of both targets are set to
${BUILT_PRODUCTS_DIR}
and tell me they are at the DerivedData/Debug (or Release) location - Architecture settings for both targets are identical
Then I hit [CMD] + B to build and it tells me that it doesn't find the header files of the nested framework. When I check the settings, User Header Search Paths contain the path to DerivedData/Debug, and inside there is the nested framework target with the header files in Versions/A/Headers.
I'm sitting here, anybody an idea what I'm doing wrong?
The issue goes away when building for Debug when I change the User header search paths to ${BUILT_PRODUCTS_DIR}/MyFramework.framework/Headers
. However this doesn't work when building for Distribution as the frameworks then use their Release settings, which ends up in a different subdirectory...
My temporary solution is to also define a Distribution configuration for the nested projects. This way the headers are found and the linker can link successfully.