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
Intro to Make
Search
Jace Browning
August 26, 2016
Programming
0
58
Intro to Make
An introduction to Makefiles given at BarCamp GR.
Jace Browning
August 26, 2016
Tweet
Share
More Decks by Jace Browning
See All by Jace Browning
HTMX + Django
jacebrowning
0
120
Python Packaging and Distribution
jacebrowning
0
67
Best Practices for Automated Regression Testing
jacebrowning
0
130
Skillet pitch at Startup Weekend
jacebrowning
0
180
Continuous Deployment using GitHub, CircleCI, and Heroku
jacebrowning
0
160
Standalone Python Programs using PyInstaller
jacebrowning
0
80
Juicy Slices of Testing
jacebrowning
0
96
Continuous Deployment: Biography of a Feature Request
jacebrowning
0
95
From Code to Production
jacebrowning
0
96
Other Decks in Programming
See All in Programming
Ruby メモリ管理 プログラミング
megmogmog1965
0
130
From Spring Boot 2 to Spring Boot 3 with Java 22 and Jakarta EE
ivargrimstad
0
1.9k
Introduction to GitOps
hwchiu
0
110
Namespace on read
tagomoris
2
370
AWS初心者ってどうやってAWSを学ぶ?〜アプリエンジニアがやってよかったアーキテクチャ学習方法〜
yamanashi_ren01
0
190
Prompt FlowによるLLMアプリケーション開発
yuto2000
1
1k
AHC035解説
terryu16
0
710
Activities at Cairo Library
cairolibrary720
0
1.2k
君たちはどうコードをレビューする (される) か / 大吉祥寺.pm
utgwkk
15
8.5k
TiDB Serverless ~理想のServerless DBを考える~
soso_15315
1
160
みんなのオブザーバビリティプラットフォームを作ってるんだがパフォーマンスがやばい #mackerelio #srenext
ne_sachirou
0
370
CSC307 Lecture 10
javiergs
PRO
0
310
Featured
See All Featured
The Cult of Friendly URLs
andyhume
75
5.9k
Robots, Beer and Maslow
schacon
PRO
157
8.1k
Visualization
eitanlees
139
14k
Design by the Numbers
sachag
277
18k
4 Signs Your Business is Dying
shpigford
178
21k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
24
1.8k
Practical Orchestrator
shlominoach
185
10k
Web Components: a chance to create the future
zenorocha
307
41k
No one is an island. Learnings from fostering a developers community.
thoeni
17
2.8k
Faster Mobile Websites
deanohume
303
30k
Designing on Purpose - Digital PM Summit 2013
jponch
113
6.6k
A designer walks into a library…
pauljervisheath
201
24k
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