Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Managing your dependencies using Carthage
Search
Romain Pouclet
February 10, 2015
Programming
210
1
Share
Managing your dependencies using Carthage
Using a dependency manager is cool, but you know what is cooler? ANOTHER DEPENDENCY MANAGER!
Romain Pouclet
February 10, 2015
More Decks by Romain Pouclet
See All by Romain Pouclet
Getting punched in the face for fun
romainpouclet
0
74
Buddybuild - Android Montreal - June 2017
romainpouclet
0
120
Closed source is best source
romainpouclet
0
520
Save countless hours of work with this one simple trick - Fastlane tools
romainpouclet
1
530
Taking a peek at ReactiveCocoa 3.0
romainpouclet
0
150
Cocoaheads Montréal: Xcode Bots
romainpouclet
1
140
Cocoaheads Montréal : Automated testing for iOS
romainpouclet
1
280
Intégration continue pour iOS
romainpouclet
0
560
Other Decks in Programming
See All in Programming
【26新卒研修資料】TDD実装演習
dip_tech
PRO
0
130
クラウドネイティブなエンジニアに向ける Raycastの魅力と実際の活用事例
nealle
2
230
Kingdom of the Machine
yui_knk
2
1.2k
実用!Hono RPC2026
yodaka
2
280
JOAI2026 1st solution - heron0519 -
heron0519
0
160
Don't Prompt Harder, Structure Better
kitasuke
0
800
The Less-Told Story of Socket Timeouts
coe401_
3
820
2026-04-15 Spring IO - I Can See Clearly Now
jonatan_ivanov
1
140
SREに優しいTerraform構成 modulesとstateの組み方
hiyanger
2
150
Swift Concurrency Type System
inamiy
1
560
ふりがな Deep Dive try! Swift Tokyo 2026
watura
0
250
10 Tips of AWS ~Gen AI on AWS~
licux
5
510
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
2
590
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
500
Joys of Absence: A Defence of Solitary Play
codingconduct
1
350
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.9k
Thoughts on Productivity
jonyablonski
76
5.1k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
160
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
330
Navigating Team Friction
lara
192
16k
Marketing to machines
jonoalderson
1
5.2k
Transcript
Managing&your&dependencies&using& CocoaPods&Carthage Cocoaheads)Montréal)02/2015
Why$do$we$need$a$new$dependency$ manager$for$iOS$/$OSX?
We#don't.
Thanks!
Dependency(management? Automa'ng*the*process*of*installing,* upgrading,*configuring,*and*removing*libraries
Cocoapods(VS(Carthage
Cocoapods!VS!Carthage • Ruby&based,&Centralized&repository,&kinda&intrusive • List&dependencies&in&a&“Podfile”,&share&your&libs&using&a&JSON& “podspec”&file • Framework&support&since&0.36 • AutomaKc&doc&generaKon&at&cocoadocs.org
• PLUGINS&(ex:&github.com/orta/cocoapodsPkeys)!
Cocoapods!VS!Carthage h"ps:/ /github.com/search?u48=✓&q=filename%3APodfile
Cocoapods(is(s*ll(a(great(tool(and( you((probably)(don't(need(to(switch
Carthage • S#ll%really%fresh • Another%nice%tool%from%Github • (Painfully?)%wri<en%in%Swi=
Cocoapods(VS(Carthage h"ps:/ /github.com/search?u48=✓&q=filename%3ACartfile
Ge#ng&started&with&Carthage • Visit&github.com/Carthage/Carthage • Go&to&releases&and&download&latest • Open&*.pkg&blahblahblah or ! ~
$ brew install carthage
Ge#ng&started&with&Carthage ! ~ $ carthage
Carthage(leverages(the(power(of(Frameworks • Available)on)OSX)since)~1977)(*reference)required) • Available)on)iOS)since)Facebook)and)Dropbox)figured)a)way)to) cheat • Available)on)iOS)since)iOS)8 • Frameworks)can)contain)a)lot:)Views,)Controls,)Resources)(cf)
WWDC)#416)
A"basic"Cartfile Add#your#dependencies#(github#repo,#URL#to#git#repository)#into#a# Cartfile github "realm/realm-cocoa" == 0.90.3 github "Palleas/ReactiveCSVParser" "master"
Installing)/)Upda.ng)dependencies $ `carthage update` • Carthage)will)fetch)all)the)dependencies)in)the)Carthage/ Checkouts)folder)and)build)the)shared)schemes • A)Cartfile.resolved)that)you/have/to/commit)will)be)generated •
Frameworks)will)be)generated)in)Carthage/Build,)simply)drag) them)in)your)project
Submodules*are*cool*again! $"carthage"update"!!use!submodules (Don't'worry,'Carthage'handle'the'hard'part'automagically)
I"have"been"using"Carthage"for"a"few"weeks" now
I"tested"it"with"a"CSV"parser"I"wrote github.com/Palleas/Reac2veCSVParser
Sharing(my(framework:(share(the(scheme
Sharing(my(framework:(tag(and(push! $ git tag 0.0.1 $ git push origin master
--tags (Note&that&you&can&use&a&branch,&a&commit,&anything&git rev- parse&will&understand)
Adding&my&framework (Because(I(like(my(framework) $ echo 'Palleas/ReactiveCSVParser "~> 0.0.1"' >> Cartfile $
carthage update
Or#if#I#want#to#contribute... $ git clone
[email protected]
:Palleas/Catalog.git $ cd Catalog $ carthage
bootstrap
Some%issues%I%got Adding&a&framework&with&no&shared&schemes *** Fetching realm-cocoa *** Checking out realm-cocoa at
"b30" *** xcodebuild output can be found in /var/folders/qt/nys5f4b154x88ysnv0bccdbm0000gn/T/carthage-xcodebuild.uEWmAC.log Project "TightDbObjcDyn.xcodeproj" has no shared schemes
Project "TightDbObjcDyn.xcodeproj" has no shared schemes (Wat?)
Some%issues%I%got Using&Carthage&(well&actually,&it's&Frameworks)& in&a&command&line&tool (TL;DR:(It's(a(pain)
Con$nuous'Integra$on (Yes,&again.)
Se#ng&up&travis/ci Carthage(is(not(included(in(Travis3ci((yet?) #!/usr/bin/env bash echo "*********** Installing Carthage ***********" brew
update brew install carthage --HEAD
Se#ng&up&travis/ci Carthage(will(build(all(your(schemes,(even(the(one(you( don't(need echo "*********** Installing dependencies with Carthage ***********"
carthage bootstrap --no-build find Carthage/Checkouts -type f -name "*iOS*.xcscheme" -delete carthage build
Conclusion Carthage(is(great.(It(provides(less(features( than(Cocoapods(but(is(easier(to(use
Thanks! (Want&a&book?) (Photos'©'Camille'Furno'!)