カテゴリ: C++ 更新日: 2025/12/14

Makefileでの変数と自動変数の使い方を初心者向けに解説

Makefileでの変数と自動変数の使い方
Makefileでの変数と自動変数の使い方

先生と生徒の会話形式で理解しよう

生徒

「先生、Makefileで毎回同じコンパイルコマンドを書くのは大変です。便利な方法はありますか?」

先生

「あります。それがMakefileの変数自動変数です。プログラムの管理を簡単にする魔法のような仕組みです。」

生徒

「魔法ですか!具体的にはどんな感じですか?」

先生

「例えば、コンパイラやコンパイルオプションを変数にまとめることで、何度も同じ文字列を書く必要がなくなります。自動変数を使うと、ターゲットや依存ファイルの名前を自動的に取得して便利です。」

1. Makefileの変数とは?

1. Makefileの変数とは?
1. Makefileの変数とは?

Makefileの変数は、値を名前に置き換えて管理するための仕組みです。例えば、コンパイラの名前やオプション、ソースファイルのリストなどを変数に入れることで、Makefile全体をシンプルに保つことができます。

例として、コンパイラとコンパイルオプションを変数で定義する方法です。


CC = g++
CFLAGS = -Wall -g
SRC = main.cpp utils.cpp
OBJ = $(SRC:.cpp=.o)
TARGET = my_program

ここでは、CCがコンパイラ、CFLAGSがコンパイルオプション、SRCがソースファイル、OBJがオブジェクトファイルのリスト、TARGETが生成する実行ファイルです。

2. 自動変数とは?

2. 自動変数とは?
2. 自動変数とは?

Makefileには特別な自動変数が用意されていて、ターゲットや依存ファイルの名前を自動で取得できます。よく使う自動変数は以下の通りです。

  • $@ : 現在のターゲット名
  • $< : 最初の依存ファイル名
  • $^ : すべての依存ファイル名

例えば、オブジェクトファイルを作るルールで使うと便利です。


%.o: %.cpp
    $(CC) $(CFLAGS) -c $< -o $@

この例では、main.cppが依存ファイルの場合、$<main.cppに置き換わり、$@main.oに置き換わります。

3. 変数と自動変数を組み合わせたMakefile例

3. 変数と自動変数を組み合わせたMakefile例
3. 変数と自動変数を組み合わせたMakefile例

CC = g++
CFLAGS = -Wall -g
SRC = main.cpp utils.cpp
OBJ = $(SRC:.cpp=.o)
TARGET = my_program

all: $(TARGET)

$(TARGET): $(OBJ)
    $(CC) $(CFLAGS) $^ -o $@

%.o: %.cpp
    $(CC) $(CFLAGS) -c $< -o $@

clean:
    rm -f $(OBJ) $(TARGET)

このMakefileでは、ソースファイルを追加しても、変数と自動変数のおかげでコンパイルルールを書き換える必要がほとんどありません。

4. 変数と自動変数を使うメリット

4. 変数と自動変数を使うメリット
4. 変数と自動変数を使うメリット
  • 同じ情報を何度も書かなくて済むのでMakefileがシンプル
  • ソースファイルを追加・削除してもルールの修正が少ない
  • 可読性が高く、初心者でも理解しやすい
  • 自動変数でルールの汎用性が上がる

初心者でも、これらの仕組みを使うことでMakefileを効率よく管理でき、C++のプロジェクト構築が楽になります。

カテゴリの一覧へ
新着記事
New1
C++
C++のメンバアクセス演算子を完全解説!初心者でもわかる . → :: の使い方まとめ
New2
Rust
Rustの文字列を極める!&str(文字列スライス)の基本概念とString型との違い
New3
C++
C++のキャスト演算子を完全解説!dynamic_cast・static_cast・const_cast・reinterpret_castを初心者向けに説明
New4
C++
C++開発のIDE選びを完全ガイド!初心者でもわかるCLion・Eclipse CDT・Qt Creator比較
人気記事
No.1
Java&Spring記事人気No1
C++
C++の主要な実装をわかりやすく解説!GCC・Clang・MSVCの違いと特徴
No.2
Java&Spring記事人気No2
C言語
C言語を学ぶ初心者におすすめの環境構築手順【2025年版】
No.3
Java&Spring記事人気No3
C言語
C言語のソースコードとヘッダファイルの役割とは?初心者向けにわかりやすく解説!
No.4
Java&Spring記事人気No4
C言語
C言語をオンラインで実行できる便利なコンパイラサービスまとめ【初心者向け】
No.5
Java&Spring記事人気No5
C言語
Visual Studio CodeでC言語を実行する方法【拡張機能の設定と実行手順】
No.6
Java&Spring記事人気No6
C言語
C言語開発でよく使われるエディタとIDEランキング【初心者向け完全ガイド】
No.7
Java&Spring記事人気No7
C++
C++リンカとコンパイラのオプション設定を完全ガイド!初心者にもわかる開発環境の基礎
No.8
Java&Spring記事人気No8
C言語
C言語の列挙型(enum)の使い方を完全ガイド!初心者でもわかる基本操作