I am working on a static library called Silicon , which I use for all my iOS applications.
Since I do not want to create one massive static library, which can become difficult to maintain, I create many small static libraries that I attach as submodules.
At the time of this writing, the dependency tree for Silicon is as follows:
Silicon
|
| ==> FDKeychain
| ==> FDDataClient
|
| => FDRequestClient
|
FDFoundationKit
| ==> FDSQLiteDatabase
|
| => FDFoundationKit
As you can see, both FDRequestClient and FDSQLiteDatabase have FDFoundationKit as a regular static library.
It seems that when a project using Silicon is built, it builds all Silicon-dependent dependencies in the project creation directory. The same thing happens for FDDataClient and FDSQLiteDatabase. Therefore, at some point, the FDFoundationKit from FDRequestClient is created and copied to the assembly directory, as well as the FDFoundationKit from FDSQLiteDatabase. Whatever the last one is built, it simply overwrites the previous one.
Just because of the successful work, FDFoundationKit has not changed in any serious ways, so FDRequestClient and FDSQLiteDatabase can not always use the same version, but I can not guarantee that this will be so forever.
I'm trying to find out if there is a way that Silicon can tell which version of FDFoundationKit to use to be responsible for Silicon, to ensure that the version used will work for both FDRequestClient, FDSQLiteDatabase, and any other dependencies that I add in the future .
I know that CocoaPods is trying to solve this problem, but I do not want anyone to have to configure all this just to make my library work. If I could just find how Silicon determines which version of FDFoundationKit will use everything, it will work fine.