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
140
Python Packaging and Distribution
jacebrowning
0
70
Best Practices for Automated Regression Testing
jacebrowning
0
140
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
85
Juicy Slices of Testing
jacebrowning
0
110
Continuous Deployment: Biography of a Feature Request
jacebrowning
0
97
From Code to Production
jacebrowning
0
96
Other Decks in Programming
See All in Programming
Java ジェネリクス入門 2024
nagise
0
530
2万ページのSSG運用における工夫と注意点 / Vue Fes Japan 2024
chinen
3
1.3k
cXML という電子商取引の トランザクションを支える プロトコルと向きあっている話
phigasui
2
2k
Progressive Web Apps für Desktop und Mobile mit Angular (Hands-on)
christianliebel
PRO
0
100
詳細解説! ArrayListの仕組みと実装
yujisoftware
0
430
Why Spring Matters to Jakarta EE - and Vice Versa
ivargrimstad
0
610
『ドメイン駆動設計をはじめよう』のモデリングアプローチ
masuda220
PRO
4
150
VR HMDとしてのVision Pro+ゲーム開発について
yasei_no_otoko
0
100
go.mod、DockerfileやCI設定に分散しがちなGoのバージョンをまとめて管理する / Go Connect #3
arthur1
10
2.3k
Workflow automationによるインシデント原因調査の自動化
showwin
1
120
Jakarta Concurrencyによる並行処理プログラミングの始め方 (JJUG CCC 2024 Fall)
tnagao7
0
200
offers_20241022_imakiire.pdf
imakurusu
2
310
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Scaling GitHub
holman
458
140k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
770
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
32
1.8k
A Modern Web Designer's Workflow
chriscoyier
692
190k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
How to train your dragon (web standard)
notwaldorf
88
5.6k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Designing Experiences People Love
moore
138
23k
A better future with KSS
kneath
238
17k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
13
1.9k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.6k
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