1) Set the install directory of the sub framework to "@loader_path/../Frameworks/" and compile normally.
2) Add "-sub_umbrella MySubFramework" to the other linker flags of your super framework.
3) Add a copy build phase which will copy your sub framework into the super framework's "Frameworks" folder.
4) Add this script to the super framework's build phases and replace "YourFramework" with your super framewprk's name:
#!/bin/sh
FRAMEWORK_DIR="$BUILT_PRODUCTS_DIR/YourFramework.framework"
FRAMEWORKS_DIR="$FRAMEWORK_DIR/Versions/Frameworks"
if ( ! [ -e "$FRAMEWORKS_DIR" ]); then
ln -s "$FRAMEWORK_DIR/Versions/Current/Frameworks" "$FRAMEWORKS_DIR"
fi
5) Add (and copy) the super framework to your app and weak link it with all of the sub frameworks of your umbrella framework (by adding "-weak_framework subFramework" to the other linker flags).
This produces 2 warnings saying the app can't find the sub framework(s), but it launches and operates normally.
- Ofri