views:

503

answers:

1

In short:

Is there a way to create a static library in Xcode such that when clients link with that library, they also link with the frameworks upon which that library depends?

The problem:

We have a shared Xcode project which contains multiple static library targets containing all of our common code. E.g., If a project wants to use the shared networking code, all they should have to do is link in our Network library.

The problem is that the libraries don't seem to "include" the frameworks on which they depend.

E.g., our Sound library uses the AudioToolkit.framework. Even when the Sound library includes AudioToolbox.framework in the list its linked libraries, clients get linker errors when linking with Sound if they don't also directly link with AudioToolkit.framework.

This is a maintenance hassle because every time a library's framework dependencies change we have manually go change the list of linked frameworks in all dependent projects.

Is this supposed to work? Is there a better way?

Thanks!

+1  A: 

In short: no, a static library is just a bunch of .o files

A solution would be to refactor your common code into "static frameworks", see there for a possible solution.

Gregory Pakosz
My reading of that link is that a "static framework" is basically a static library with bundled headers. If that's correct and static libraries don't support what I want, then a "static framework" wouldn't either.
Jon-Eric