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
Makefile 入門
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
SAW
July 13, 2026
Programming
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Makefile 入門
第56回関西PHP勉強会 の発表資料です。
SAW
July 13, 2026
More Decks by SAW
See All by SAW
Effortless API Documentation with Scribe
azuki
0
100
Laravelで手軽にAPIドキュメントを生成する ― Scribe活用術
azuki
0
74
🪝 便利な Property Hooks を 使ってみよう 🪝
azuki
0
110
決済システム超初心者が Stripe に入門している話
azuki
0
170
React Hook Form と Zod によるフォームバリデーション
azuki
0
84
PHP で form-data を POST 以外のメソッドで受け取るには?
azuki
0
97
PHP で学ぶ OAuth 入門
azuki
2
1.5k
EditorConfig を使ってみよう
azuki
1
130
Symfony でサクッと作る REST API サーバー
azuki
1
300
Other Decks in Programming
See All in Programming
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
290
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
240
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
160
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
130
Intent as Code
shoppingjaws
6
1.1k
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
1k
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
8
5.3k
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
5.2k
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
430
App Intentsのビルドプロセスを支える技術
kntkymt
0
490
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
3.1k
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
110
Featured
See All Featured
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
440
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
450
A better future with KSS
kneath
240
18k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
340
RailsConf 2023
tenderlove
30
1.6k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
Color Theory Basics | Prateek | Gurzu
gurzu
1
480
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
Skip the Path - Find Your Career Trail
mkilby
1
240
The Mindset for Success: Future Career Progression
greggifford
PRO
0
520
Transcript
Makefile 入門 第56回関西PHP勉強会 2026/07/13 SAW
$whoami 氏名: 加藤 宗一郎 (32歳) ハンドルネーム: SAW : (@azuki_eater) 関西の
IT エンジニア コミュニティの賑やかし 大阪在住・愛知出身 得意分野: Web アプリケーション開発 Laravel, Vue 所属: 有限会社アリウープ マスカルポーネって響きがマスカットの品種名っぽくない? 2 本日の迷言
前提条件・免責事項 GNU make を対象とします BSD make との互換性は考慮しません UNIX/Linux 系のシステムを想定します Windows
(WSL を除く) は対象外とします 3
このトークの動機 とある懇親会で Makefile の使い方が意外と盛り上がった 自分が過去に少しだけ使ってた make の経験が共有できそう 大学の卒論の のコンパイルに利用 (約
10 年前) PHP もソースからビルドするのに Makefile を利用 Makefile の基礎を知るきっかけになってほしい LT X A E 4
Makefile とは make を実行する際に読み込まれるファイル make : ファイルの生成に必要なコマンドを自動的に判定して実行するツール ファイルの依存関係に基づいて実行するコマンドを決定 Makefile にはファイルの依存関係と実行するコマンドを記述
C で書かれたプログラムをビルドする際に利用されることが多い C のプログラム以外のビルドにも利用可能 例: のコンパイル LT X A E 5
Makefile の実用例 ソースコードのビルドやインストール PHP GNU Coreutils FreeBSD Ports 6
ファイルの依存関係 あるファイル から ファイル を生成する時に は と依存関係にある : 依存ファイル 例:
C のソースコード : ターゲット 例: C のソースコードからコンパイルされた実行ファイル ファイルの依存関係は多段の階層になることがある 例: のファイルの依存関係 diagram.dot diagram.eps paper.tex paper.dvi paper.pdf S T S T S T LT X A E 7
お好み焼きで考える依存関係 生地を焼く 小麦粉・卵・水・千切りキャベツを混ぜる キャベツを千切りにする 8
Makefile の基本構造 以下の要素で構成 生成対象のファイル (ターゲット) ターゲットを生成するために必要なファイル (依存ファイル) ターゲットと依存ファイル は :
(コロン) で区切る ターゲットを生成するために実行が必要なコマンド群 実行するコマンドの前は タブ文字 でインデント main : main.c hello.o cc -o main main.c hello.o hello.o : hello.c cc -c hello.c 9
make の基本的な動作 make を実行するとそのディレクトリの Makefile を読み込んで実行 指定がない場合は Makefile 内の先頭のターゲットを生成 ターゲットを指定する場合は
make の引数に渡す ターゲットを生成するのに必要なコマンドのみ実行 ターゲットの生成に関係ないコマンドは実行されない 依存ファイルが更新されていない場合は実行されない 10
ファイルの更新の判定方法 ターゲットと依存ファイルのファイルのタイムスタンプで判定 依存ファイルの方が新しい場合は更新されていると判定 ファイルの変更差分での判定ではない $ make hoge.o cc -c hoge.c
-o hoge.o $ make hoge.o cc -c hoge.c -o hoge.o $ stat -f '%N %Sm' -t '%Y/%m/%d %H:%M:%S' hoge.{c,o} hoge.c 2026/07/12 13:18:34 hoge.o 2026/07/12 13:32:03 $ make hoge.o make: `hoge.o' is up to date. $ touch hoge.c $ stat -f '%N %Sm' -t '%Y/%m/%d %H:%M:%S' hoge.{c,o} hoge.c 2026/07/12 13:32:11 hoge.o 2026/07/12 13:32:03 $ 11
便利な機能 変数: 一般的なプログラミング言語の変数と同様 自動変数: ターゲットや依存ファイルなどを参照するための変数 $@ : ターゲットのファイル名 $< :
依存ファイルの最初のファイル名 $^ : 依存ファイルのすべてのファイル パターンルール: 任意のファイルにルールを適用できる機能 % をワイルドカードとして %.o : %.c のようなルールを記述 Phony targets: make clean のように実行したい内容を指定する時に利用 .PHONY : clean のように指定 12
便利な機能を利用した Makefile の例 .PHONY : all clean all : main1
main2 objects1 = hoge.o piyo.o objects2 = foo.o bar.o main1 : main1.c $(objects1) $(CC) -o $@ $^ # $(CC) は C コンパイラコマンドを表す組み込み変数 main2 : main2.c $(objects2) $(CC) -o $@ $^ %.o : %.c $(CC) -c $< -o $@ clean : rm *.o 13
発展編 14
php-src の Makefile はどうなっている? php-src のリポジトリには Makefile が存在しない README を読むと
make の前に実行しているコマンドがある ./buildconf : configure というシェルスクリプトを生成 ./configure : Makefile を生成 ./buildconf ./configure make -j4 15
buildconf と configure の正体 実行する環境に合わせた Makefile を自動的に生成するためのスクリプト OS やコンパイラなどの差異を吸収 中身は
shell script Autotools と呼ばれるツール群によってスクリプトや Makefile を自動生成 16
まとめ Makefile の基礎を説明 実行される内容とファイルの依存関係 Makefile の基本的な書き方 大規模プロジェクトで Makefile を生成する方法を説明 17
ご清聴ありがとうございました
宣伝 その1 フロントエンドカンファレンス関西 2026 開催予定 日付: 2026/10/12 (月・祝) 開催場所: コングレスクエア
グラングリーン大阪 SAVE THE DAY! 19
宣伝 その2 Vue Fes Japan 2026 開催予定 日付: 2026/10/24 (土)
開催場所: 大手町プレイス ホール&カンファレンス SAVE THE DAY! 20