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
56
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
110
Python Packaging and Distribution
jacebrowning
0
60
Best Practices for Automated Regression Testing
jacebrowning
0
120
Skillet pitch at Startup Weekend
jacebrowning
0
170
Continuous Deployment using GitHub, CircleCI, and Heroku
jacebrowning
0
150
Standalone Python Programs using PyInstaller
jacebrowning
0
75
Juicy Slices of Testing
jacebrowning
0
93
Continuous Deployment: Biography of a Feature Request
jacebrowning
0
93
From Code to Production
jacebrowning
0
92
Other Decks in Programming
See All in Programming
Folding Cheat Sheet #2
philipschwarz
PRO
0
110
ONE WEDGE_company_guide
1wedge_one
0
370
ドメイン・ファーストで考える問題解決に役立つモデル設計 / Domain First Model Design
suzushin54
2
2.1k
Changed Rules: Architectures with Lightweight Stores
manfredsteyer
PRO
0
230
雑に思考を整理する技術と効能
konifar
55
25k
Build with AI 2024 Seoul - 제로부터 시작하는 Flutter with Gemini 생활 - 박제창
itsmedreamwalker
0
200
StreamlitとTerraformでデータカタログを作った話
gussan0223
0
300
AWS Application Composerで始める、 サーバーレスなデータ基盤構築 / 20240406-jawsug-hokuriku-shinkansen
kasacchiful
1
250
両面どころかインフラもTSでできるよ ~ 全方位TypeScriptによるプロダクト開発 ~
myfinder
9
3.2k
ログラスを支える設計標準について / loglass-design-standards
urmot
10
2.1k
コーンフレークから始める モデリング会話入門
ogurotakayuki
0
280
PHP8.3の機能を振り返る / Review of PHP 8.3 features
seike460
PRO
1
110
Featured
See All Featured
BBQ
matthewcrist
80
8.7k
Imperfection Machines: The Place of Print at Facebook
scottboms
258
12k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
The Mythical Team-Month
searls
215
42k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
15
1.4k
Rails Girls Zürich Keynote
gr2m
91
13k
Navigating Team Friction
lara
177
13k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
13
1.5k
Visualization
eitanlees
135
14k
The Invisible Customer
myddelton
114
12k
Done Done
chrislema
178
15k
Building a Scalable Design System with Sketch
lauravandoore
455
32k
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