kstenerud / iOS-Universal-Framework

An XCode project template to build universal frameworks (arm7, arm7s, and simulator) for iOS / iPhone.
2.95k stars 473 forks source link

Building takes forever when subproject added #89

Open 1am opened 11 years ago

1am commented 11 years ago

Hi I added a external library subproject to my project and after that the third shell script takes forever to complete. I waited for max 20-30 minutes and it never finished. I tried both real and fake framework. The library itself compiles really fast as so does my project. Why adding a subproject and a link to static lib makes it impossible to finish the build process?

1am commented 11 years ago

... My test app target which also uses the subproject compiles in a few seconds and the problem is with the third shell script. Both targets are built correctly but the .embeddedframework directory never appears.

kstenerud commented 11 years ago

Mk7 sometimes has problems with subproject dependencies. Try it with Mk 8 (beta branch) and see if the problem persists.

1am commented 11 years ago

Now, after updating along with the instructions i'm getting

KeyError: 'productRefGroup' Command /bin/sh failed with exit code 1

1am commented 11 years ago

This also happens when i create a new target using Mk8 updated templates

1am commented 11 years ago

This is the output of build log

UFW (M iphonesimulator): ERROR: Build failed Traceback (most recent call last): File "{BUILD_PATH}/Script-9FEC0D8515AEB6C7008F34AF.sh", line 804, in run_build() File "{BUILD_PATH}//Script-9FEC0D8515AEB6C7008F34AF.sh", line 737, in run_build project = Project(os.path.join(os.environ['PROJECT_FILE_PATH'], "project.pbxproj")) File "{BUILD_PATH}//Script-9FEC0D8515AEB6C7008F34AF.sh", line 195, in init self.project_data = self.load_from_file(filename) File "{BUILD_PATH}//Script-9FEC0D8515AEB6C7008F34AF.sh", line 232, in load_from_file self.build_full_paths(project_data, splitpath(os.environ['SOURCE_ROOT'])) File "{BUILD_PATH}//Script-9FEC0D8515AEB6C7008F34AF.sh", line 280, in build_full_paths self.build_full_paths(node['productRefGroup'], base_path) KeyError: 'productRefGroup'

kstenerud commented 11 years ago

Hmm this seems related to another problem I've been trying to solve with the project reader portion of the script. Can you try building up the project piece-by-piece and let me know at which point things break?

1am commented 11 years ago

What do you mean piece by piece?

kstenerud commented 11 years ago

Basically, make a new version of your project from scratch (or maybe a simpler version), build, add your next component (subproject or whatever), build, repeat until things break.

1am commented 11 years ago

Sorry, not right now. Right now i need to push a build asap in any possible way.

1am commented 11 years ago

I think this might be caused by using cpp libraries in one of subprojects. Not sure but this is the core cause of my problems right now and this also might be casuing issues in the embeddedframework building process

1am commented 11 years ago

The script seems to freeze at

xcodebuild -project "${PROJECT_FILE_PATH}" -target "${TARGET_NAME}" -configuration "${CONFIGURATION}" -sdk ${UFW_OTHER_PLATFORM}${UFW_SDK_VERSION} BUILD_DIR="${BUILD_DIR}" CONFIGURATION_TEMP_DIR="${PROJECT_TEMP_DIR}/${CONFIGURATION}-${UFW_OTHER_PLATFORM}" $ACTION

Even without the subproject. I recreated all of the subproject settings in my host project and added source files. My subproject includes http://botan.randombit.net/ library. Compiles without any problems for the device/simulator and freezes on the mentioned part of the embeddedframework building script. .framework got build for both platforms (simulator/device) correctly but the .embeddedframework takes quite some time to build (from 5 minutes to 30+minutes). The time it takes to build is totally random and most of the time its 20+ after i stop the build process.

1am commented 11 years ago

If i set ONLY_ACTIVE_PLATFORM variable to something else than YES it works! But it only builds for the device and not the simulator. How can i produce a build for the simulator manually?