As of Xcode 7, there are some library/framework linking options in Xcode
Go to application Target
in project tab
General -> Embedded Binaries
General -> Link Frameworks and Libraries
Build Phases -> Target Dependencies
Build Phases -> Link Binary with Libraries
Here are a few ways I found
Embedded Binaries
optionThe Alamofire.framework is automagically added as a target dependency, linked framework and embedded framework in a copy files build phase which is all you need to build on the simulator and a device.
Creating your first iOS Framework shows that adding the Library.xcodeproj
into workspace, then Build Phases -> Link Binary with Libraries
Carthage Tutorial: Getting Started shows that dragging Library.framework
into General -> Link Frameworks and Libraries
. It seems General -> Link Frameworks and Libraries
and Build Phases -> Link Binary with Libraries
are the same
Carthage seems to differentiate between iOS and OS X.
If you're building for OS X: On your application targets’ “General” settings tab, in the “Embedded Binaries” section, drag and drop each framework you want to use from the Carthage/Build folder on disk.
If you're building for iOS, tvOS, or watchOS: On your application targets’ “General” settings tab, in the “Linked Frameworks and Libraries” section, drag and drop each framework you want to use from the Carthage/Build folder on disk.
Reading Linking to a Library or Framework, we know that these options are about linking a framework into our application/framework.
But what are the differences between them? Is any single option a catch all
for all of them?
If you're building for iOS, tvOS, or watchOS: On your application targets' “General” settings tab, in the “Linked Frameworks and Libraries” section, drag and drop each framework you want to use from the Carthage/Build folder on disk.
At the bottom of the left sidebar, in the “Filter” box, type “Libraries”. If, in the Project Navigator, you now see a yellow folder icon with the word “Libraries” next to it, then you have found the Libraries folder you are looking for.
The type of library that provides this flexibility is called dynamic library. Dynamic libraries are not statically linked into client apps; they don't become part of the executable file. Instead, dynamic libraries can be loaded (and linked) into an app either when the app is launched or as it runs.
For dynamic frameworks built with carthage I usually use this setup:
Only the app target is responsible for embedding all the frameworks and their dependencies. That way if an extension and the app both use a framework, it will be distributed with the app only once.
For the Xcode interface:
The views under General seem to be filled from the build phases tab so you can use either.
Hope that makes sense.
Edit: Target dependencies are just targets that need to be built before the current target can be built. So your app target would list its extension here, so that the extension gets built, whenever you build your app.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With