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
1
200
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
Tweet
Share
More Decks by Romain Pouclet
See All by Romain Pouclet
Getting punched in the face for fun
romainpouclet
0
64
Buddybuild - Android Montreal - June 2017
romainpouclet
0
110
Closed source is best source
romainpouclet
0
500
Save countless hours of work with this one simple trick - Fastlane tools
romainpouclet
1
510
Taking a peek at ReactiveCocoa 3.0
romainpouclet
0
140
Cocoaheads Montréal: Xcode Bots
romainpouclet
1
130
Cocoaheads Montréal : Automated testing for iOS
romainpouclet
1
260
Intégration continue pour iOS
romainpouclet
0
540
Other Decks in Programming
See All in Programming
gunshi
kazupon
1
140
Graviton と Nitro と私
maroon1st
0
160
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
540
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
180
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
930
SQL Server 2025 LT
odashinsuke
0
140
CSC307 Lecture 01
javiergs
PRO
0
670
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
160
dchart: charts from deck markup
ajstarks
3
960
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
480
PostgreSQLで手軽にDuckDBを使う!DuckDB&pg_duckdb入門/osc25hi-duckdb
takahashiikki
0
240
GoLab2025 Recap
kuro_kurorrr
0
3.8k
Featured
See All Featured
From π to Pie charts
rasagy
0
110
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
68
Building Applications with DynamoDB
mza
96
6.9k
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
The Curse of the Amulet
leimatthew05
0
7.1k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
89
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
94
End of SEO as We Know It (SMX Advanced Version)
ipullrank
2
3.9k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
140
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
Tell your own story through comics
letsgokoyo
1
780
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'!)