Search code examples
iosxcodefacebook-ios-sdkcocos2d-x-3.0soomla

What are the ways to clear out Xcode linker settings?


My question:

Is it possible for Xcode (7.2.1) to erroneously retain instructions to link a framework that is no longer anywhere in the project? If so, how can this be solved?

My problem:

I'm trying to compile an iOS project using Cocos2d-x v3.10 and the latest versions of the Soomla modules, particularly Soomla Profile. Other Soomla modules worked before I implemented Profile, but as soon as I add -lSoomlaiOSProfileFacebook as a linker flag, I get a compile-time error:

ld: framework not found FBSDKCoreKit for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

I'm thoroughly confused by this, as FBSDKCoreKit is a framework used in Facebook's iOS SDK version 4.0 and above, and Soomla Profile is only configured to use 3.0 (and therefore shouldn't be asking for FBSDKCoreKit). I have the FacebookSDK framework version 3.23.3 integrated into the project. There is nothing in my project that should be referencing or asking for FBSDKCoreKit.

My only possible explanation is that at one time I did have FBSDKCoreKit in my project before I understood that Soomla wouldn't work with it, and I successfully triggered a couple actions that were registered in the Facebook Developer portal (this was NOT done using Soomla commands, and this was done before the -lSoomlaiOSProfileFacebook library was linked). I feel like Xcode may be hanging on to some memory of FBSDKCoreKit for some reason, even though the framework has been completely removed along with all references.

To sum: Soomla should be looking for FacebookSDK, not FBSDKCoreKit.

Things I have tried:

  • Erasing the entire project and cloning a git commit from before implementation of Facebook was ever attempted
  • Erasing Xcode derived data (from both within Xcode and directly from Finder)
  • Cleaning the project
  • Deleting the Facebook SDK and reinstalling
  • Deleting all Soomla modules and reinstalling by 1) removing references to Soomla projects and libraries from the project, 2) deleting Soomla modules from Cocos2d-x directory and replacing them with freshly downloaded versions (this includes the library referenced by -lSoomlaiOSProfileFacebook), re-adding them to the project (both Xcode project files and static libraries)

All of these have been tried multiple times, and I have at least once done every step before a compile attempt.

I am convinced there is nothing in the project that should be asking for FBSDKCoreKit, which makes me wonder if this is an Xcode issue. Are there any next steps for a problem of this nature?

References

I will happily include any more information you all feel is relevant. Any feedback or troubleshooting tips would be happily appreciated.


Solution

  • Occam's Razor led me to grep all the static libraries provided with the Soomla Profile project. Turns out that starting with 1.4.0 (it's currently on 1.8.1) the provided binaries are querying the wrong SDK after all. I've opened a PR but keeping this question up because of the fantastic responses that taught me about checking the .pbxproj files.