Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Intro to Make
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Jace Browning
August 26, 2016
Programming
100
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Intro to Make
An introduction to Makefiles given at BarCamp GR.
Jace Browning
August 26, 2016
More Decks by Jace Browning
See All by Jace Browning
HTMX + Django
jacebrowning
0
180
Python Packaging and Distribution
jacebrowning
0
110
Best Practices for Automated Regression Testing
jacebrowning
0
180
Skillet pitch at Startup Weekend
jacebrowning
0
220
Continuous Deployment using GitHub, CircleCI, and Heroku
jacebrowning
0
240
Standalone Python Programs using PyInstaller
jacebrowning
0
150
Juicy Slices of Testing
jacebrowning
0
160
Continuous Deployment: Biography of a Feature Request
jacebrowning
0
140
From Code to Production
jacebrowning
0
130
Other Decks in Programming
See All in Programming
Domain-Driven Transformation
hschwentner
2
2.3k
APNsからLive Activityを開始する話
yumnumm
0
160
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
260
プロダクトコードからライブラリの境界を見つける
elmetal
PRO
0
110
カツオ、ご期待ください
suneo3476
0
160
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.8k
気持ちぃ〜角丸 Squircle
ryu1013
0
250
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
3k
最近”作らせてる” ローカルAIアプリの話
akit37
0
440
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
240
速習iPhone Duo対応
yuukiw00w
2
980
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
330
Featured
See All Featured
Everyday Curiosity
cassininazir
0
350
The Curious Case for Waylosing
cassininazir
1
560
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
590
Test your architecture with Archunit
thirion
2
2.4k
Paper Plane (Part 1)
katiecoart
PRO
2
11k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Crafting Experiences
bethany
1
380
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
590
The Curse of the Amulet
leimatthew05
3
15k
The SEO Collaboration Effect
kristinabergwall1
1
590
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Navigating Team Friction
lara
192
16k
Transcript
Intro to Make @JaceBrowning
What is Make? • Build automation tool ◦ Builds executable
programs from source code ◦ Update files automatically when related files change • Initial release: 1977 • Filename: Makefile ◦ Targets ◦ Components ◦ Commands
barcamp: barcamp.c gcc -o barcamp barcamp.c $ make barcamp
None
Motivation
Arguments against Grunt, Gulp, etc. • Bootstrapping problem • Limited
dependency tracking • Project switching overhead ◦ How do I install the dependencies? ◦ How do I run the tests?
Arguments for Make • Ubiquitous • Stable • Self-contained •
Established conventions ◦ make ◦ make test ◦ make clean
Advantages of Standardizing • Reduced project switching overhead • Shared
Continuous Integration configuration • Easier build debugging
before_script: - git submodule update --init --recursive - ./set_token.sh -
bundle install script: - bundle exec rake secure_pipeline:network_attack - bundle exec rake secure_pipeline:ssl_attack - bundle exec rake secure_pipeline:xss - bundle exec rake secure_pipeline:information_leakage - bundle exec rake secure_pipeline:sql_injection before_script: - make script: - make ci
Features
Files and Timestamps • Create missing files • Traverse dependency
chains • Update files when dependencies are newer
Variables • CONSTANT := value • LAZY = $(shell ls
*.py) • OPTIONAL ?= value2 ◦ make <target> OPTIONAL=value3
Automatic Variables • $@ • $< • $^ https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html
Demo
Thanks! @JaceBrowning