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
79
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
160
Python Packaging and Distribution
jacebrowning
0
92
Best Practices for Automated Regression Testing
jacebrowning
0
150
Skillet pitch at Startup Weekend
jacebrowning
0
200
Continuous Deployment using GitHub, CircleCI, and Heroku
jacebrowning
0
200
Standalone Python Programs using PyInstaller
jacebrowning
0
110
Juicy Slices of Testing
jacebrowning
0
130
Continuous Deployment: Biography of a Feature Request
jacebrowning
0
120
From Code to Production
jacebrowning
0
100
Other Decks in Programming
See All in Programming
ALL CODE BASE ARE BELONG TO STUDY
uzulla
27
6.7k
マンガアプリViewerの大画面対応を考える
kk__777
0
240
Building, Deploying, and Monitoring Ruby Web Applications with Falcon (Kaigi on Rails 2025)
ioquatix
4
2.5k
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-Based Tools Run Without a Rust Environment?
ssssota
14
46k
「ちょっと古いから」って避けてた技術書、今だからこそ読もう
mottyzzz
12
7.1k
Reactive Thinking with Signals and the Resource API
manfredsteyer
PRO
0
110
コードとあなたと私の距離 / The Distance Between Code, You, and I
hiro_y
0
190
monorepo の Go テストをはやくした〜い!~最小の依存解決への道のり~ / faster-testing-of-monorepos
convto
2
540
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
3
970
TFLintカスタムプラグインで始める Terraformコード品質管理
bells17
2
370
React Nativeならぬ"Vue Native"が実現するかも?_新世代マルチプラットフォーム開発フレームワークのLynxとLynxのVue.js対応を追ってみよう_Vue Lynx
yut0naga1_fa
2
890
AkarengaLT vol.38
hashimoto_kei
1
120
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
185
22k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
GitHub's CSS Performance
jonrohan
1032
470k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Product Roadmaps are Hard
iamctodd
PRO
55
11k
Bash Introduction
62gerente
615
210k
Building Better People: How to give real-time feedback that sticks.
wjessup
369
20k
How STYLIGHT went responsive
nonsquared
100
5.8k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
Music & Morning Musume
bryan
46
6.9k
Documentation Writing (for coders)
carmenintech
75
5.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
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