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
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
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
気持ちぃ〜角丸 Squircle
ryu1013
0
310
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
380
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.6k
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
170
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
180
phperだってパンチカードでコーディングしたい
o0h
PRO
0
330
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
170
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
120
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
260
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
28
2.9k
sira's awesome portfolio website redesign presentation
elsirapls
0
450
Utilizing Notion as your number one productivity tool
mfonobong
4
620
Balancing Empowerment & Direction
lara
6
1.3k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
Tell your own story through comics
letsgokoyo
1
1.1k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
640
Ethics towards AI in product and experience design
skipperchong
2
430
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Code Reviewing Like a Champion
maltzj
529
40k
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