Build error after switching to ARC
Hi all
Must be making some stupid mistake here ...
I just converted an ios project targeted to 4.0 to clang using ARC. It builds and runs fine under xcode but when trying to compile with idea I get:
/Developer/usr/bin/xcodebuild -project CardBox.xcodeproj -target CardBox -configuration Debug -sdk iphonesimulator4.3 SYMROOT=/Users/daniel/Library/Caches/appCode10/DerivedData/CardBox-459c362b/Build/Products OBJROOT=/Users/daniel/Library/Caches/appCode10/DerivedData/CardBox-459c362b/Build/Intermediates ARCHS=i386 VALID_ARCHS=i386 ONLY_ACTIVE_ARCH=NO TEST_AFTER_BUILD=NO build
Build settings from command line:
ARCHS = i386
OBJROOT = /Users/daniel/Library/Caches/appCode10/DerivedData/CardBox-459c362b/Build/Intermediates
ONLY_ACTIVE_ARCH = NO
SDKROOT = iphonesimulator4.3
SYMROOT = /Users/daniel/Library/Caches/appCode10/DerivedData/CardBox-459c362b/Build/Products
TEST_AFTER_BUILD = NO
VALID_ARCHS = i386
2011-12-11 13:37:50.884 xcodebuild[2044:903] [MT] IDELogStore: Failed to open Build log store: Error Domain=IDEFoundationErrorDomain Code=1 UserInfo=0x200775640 "deserialization of log failed because of a version number mismatch". User info: {
NSFilePath = "/Users/daniel/Library/Developer/Xcode/DerivedData/CardBox-esxtxgdngnozscfkjwvgvqpburot/Logs/Build/BFD117F0-557F-44E2-B0F5-06AE3F491971.xcactivitylog";
NSLocalizedDescription = "deserialization of log failed because of a version number mismatch";
}.
=== BUILD NATIVE TARGET CardBox OF PROJECT CardBox WITH CONFIGURATION Debug ===
Check dependencies
Ld /Users/daniel/Library/Caches/appCode10/DerivedData/CardBox-459c362b/Build/Products/Debug-iphonesimulator/CardBox.app/CardBox normal i386
cd /Users/daniel/Source/IPhone/CardBox
setenv MACOSX_DEPLOYMENT_TARGET 10.6
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk -L/Users/daniel/Library/Caches/appCode10/DerivedData/CardBox-459c362b/Build/Products/Debug-iphonesimulator -F/Users/daniel/Library/Caches/appCode10/DerivedData/CardBox-459c362b/Build/Products/Debug-iphonesimulator -filelist /Users/daniel/Library/Caches/appCode10/DerivedData/CardBox-459c362b/Build/Intermediates/CardBox.build/Debug-iphonesimulator/CardBox.build/Objects-normal/i386/CardBox.LinkFileList -mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -Xlinker -no_implicit_dylibs -D__IPHONE_OS_VERSION_MIN_REQUIRED=40000 -framework QuartzCore -framework CoreData -framework UIKit -framework Foundation -framework CoreGraphics -o /Users/daniel/Library/Caches/appCode10/DerivedData/CardBox-459c362b/Build/Products/Debug-iphonesimulator/CardBox.app/CardBox
Undefined symbols for architecture i386:
"_objc_retain", referenced from:
+[__ARCLite__ load] in libarclite_iphonesimulator.a(arclite.o)
-[CardBoxAppDelegate application:didFinishLaunchingWithOptions:] in CardBoxAppDelegate.o
-[CardBoxAppDelegate applicationDidBecomeActive:] in CardBoxAppDelegate.o
-[CardBoxAppDelegate applicationWillTerminate:] in CardBoxAppDelegate.o
+[ManagedContextHolder createObject:] in ManagedContextHolder.o
-[EditBoxesRootViewController numberOfSectionsInTableView:] in EditBoxesRootViewController.o
-[EditBoxesRootViewController tableView:numberOfRowsInSection:] in EditBoxesRootViewController.o
...
(maybe you meant: _objc_retainedObject)
"_objc_retainAutoreleasedReturnValue", referenced from:
-[CardBoxAppDelegate application:didFinishLaunchingWithOptions:] in CardBoxAppDelegate.o
+[ManagedContextHolder initializeContext] in ManagedContextHolder.o
+[ManagedContextHolder releaseContext] in ManagedContextHolder.o
+[ManagedContextHolder saveContext] in ManagedContextHolder.o
+[ManagedContextHolder createObject:] in ManagedContextHolder.o
-[ManagedContextHolder managedObjectModel] in ManagedContextHolder.o
-[ManagedContextHolder persistentStoreCoordinator] in ManagedContextHolder.o
...
"_objc_release", referenced from:
-[CardBoxAppDelegate application:didFinishLaunchingWithOptions:] in CardBoxAppDelegate.o
-[CardBoxAppDelegate applicationDidBecomeActive:] in CardBoxAppDelegate.o
-[CardBoxAppDelegate applicationWillTerminate:] in CardBoxAppDelegate.o
+[ManagedContextHolder initializeContext] in ManagedContextHolder.o
+[ManagedContextHolder releaseContext] in ManagedContextHolder.o
+[ManagedContextHolder saveContext] in ManagedContextHolder.o
+[ManagedContextHolder createObject:] in ManagedContextHolder.o
...
"_objc_storeStrong", referenced from:
-[CardBoxAppDelegate .cxx_destruct] in CardBoxAppDelegate.o
+[ManagedContextHolder releaseContext] in ManagedContextHolder.o
+[ManagedContextHolder saveContext] in ManagedContextHolder.o
-[ManagedContextHolder persistentStoreCoordinator] in ManagedContextHolder.o
-[ManagedContextHolder .cxx_destruct] in ManagedContextHolder.o
-[EditBoxesRootViewController fetchedResultsController] in EditBoxesRootViewController.o
-[EditBoxesRootViewController .cxx_destruct] in EditBoxesRootViewController.o
...
"_objc_autoreleaseReturnValue", referenced from:
+[ManagedContextHolder createObject:] in ManagedContextHolder.o
-[EditBoxesRootViewController tableView:cellForRowAtIndexPath:] in EditBoxesRootViewController.o
-[EditBoxesRootViewController fetchedResultsController] in EditBoxesRootViewController.o
-[CardsListViewController fetchedResultsController] in CardsListViewController.o
-[CardsListViewController tableView:cellForRowAtIndexPath:] in CardsListViewController.o
-[CardsListViewController tableView:titleForHeaderInSection:] in CardsListViewController.o
-[LearnCardsViewController getNextCard] in LearnCardsViewController.o
...
"_objc_retainAutoreleaseReturnValue", referenced from:
-[ManagedContextHolder managedObjectModel] in ManagedContextHolder.o
-[ManagedContextHolder persistentStoreCoordinator] in ManagedContextHolder.o
-[ManagedContextHolder managedObjectContext] in ManagedContextHolder.o
-[CardViewController activeTextView] in CardViewController.o
-[NavigationBar navigationController] in NavigationBar.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
** BUILD FAILED **
The following build commands failed:
Ld /Users/daniel/Library/Caches/appCode10/DerivedData/CardBox-459c362b/Build/Products/Debug-iphonesimulator/CardBox.app/CardBox normal i386
(1 failure)
Please sign in to leave a comment.
Does performing 'clean' first solve the problem?
Thanks for the follow up.
Nope clean didn't help. I also tried removing appcode caches. No luck.
In the end I worked around it by creating a new project and re-integration my sources. So that was no big problem.
I created a stripped down version of the project which still shows the problem and created http://youtrack.jetbrains.net/issue/OC-2642 just in case someone cares to look into that.
But as I said no big problem.