I have an xcode workspace which is set up with some project libraries which are dependent on Boost 1_49 (built as an iOS framework), a static framework (a Fake Framework from https://github.com/kstenerud/iOS-Universal-Framework) and then a test app which uses the static framework.
The test app in addition uses boost.
I wanted to do some tests to see if it was possible to have the test app working on a different version of boost than the framework. This way we could deliver the framework as a standalone framework without having any restrictions on the version of boost that needs to be used in an application that is using our framework.
As such, I set up the test app to use boost 1_48 and the framework to use 1_49. I have it set up so that all of the projects which use boost are not set link the boost framework into the binary, and the framework project I have doesn't actually have boost referenced in it at all; it only has references to all the .a libs generated by its dependencies.
ProjectA
- Boost.framework 1_49
ProjectB
MyFramework
- ProjectA.a
- ProjectB.a
TestApp
- MyFramework.framework
- Boost.framework 1_48
I then added some code in both the framework and the test app to print out the boost version. Both places printed out version 1_49, and not 1_48. In addition, I tried to add some code in the test app to step into boost (just getting the current time for example), and the xCode debugger took me into the boost version contained in ProjectA, and not into the boost version contained in the TestApp.
What is going on with the linking and how can I get the application to only use the version of boost included in the TestApp?
Thanks,
Liron
Seems that the problem was that some other libraries in the application were also linking in Boost 1.49, so even though I thought I was using 1.48, 1.49 was there as well. Oh well.