C++ メイクファイルのテンプレートと使用法


C++ メイクファイルのテンプレート

C++ プログラムをビルドする際に、メイクファイル (Makefile) を使用することは一般的です。メイクファイルは、ソースコードのビルド手順を定義し、ビルドプロセスを自動化するためのスクリプトファイルです。この記事では、C++ メイクファイルのテンプレートと使用法について説明します。

以下に、基本的な C++ メイクファイルのテンプレートを示します。

# プロジェクト名
TARGET = myprogram
# コンパイラ
CC = g++
# ソースファイル
SRCS = main.cpp foo.cpp bar.cpp
# オブジェクトファイル
OBJS = $(SRCS:.cpp=.o)
# コンパイルオプション
CFLAGS = -Wall -O2
# リンクオプション
LDFLAGS = -lm
# ビルドターゲット
all: $(TARGET)
$(TARGET): $(OBJS)
    $(CC) $(OBJS) $(LDFLAGS) -o $@
%.o: %.cpp
    $(CC) $(CFLAGS) -c $< -o $@
clean:
    rm -f $(OBJS) $(TARGET)

上記のテンプレートは、基本的なメイクファイルの構造を示しています。以下に、各行の役割を説明します。

  • TARGET:ビルドされる実行可能ファイルの名前を定義します。
  • CC:使用するコンパイラを指定します。ここでは、g++ を使用しています。
  • SRCS:ソースファイルのリストを定義します。
  • OBJS:コンパイルされたオブジェクトファイルのリストを定義します。
  • CFLAGS:コンパイルオプションを指定します。ここでは、-Wall (警告を表示する) と -O2 (最適化レベルを指定する) を使用しています。
  • LDFLAGS:リンクオプションを指定します。ここでは、-lm (数学ライブラリをリンクする) を使用しています。
  • all:ビルドターゲットを定義します。$(TARGET) をビルドします。
  • $(TARGET):ビルドターゲットの依存関係を指定します。OBJS をリンクして実行可能ファイルを生成します。
  • %.o: %.cpp:ソースファイルからオブジェクトファイルを生成する規則を定義します。
  • clean:ビルド生成物を削除するためのターゲットを定義します。

上記のテンプレートを使用して、自分のプロジェクトに合わせてメイクファイルをカスタマイズすることができます。ソースファイルの追加やコンパイルオプションの変更など、必要に応じて編集してください。

この記事では、C++ メイクファイルのテンプレートと基本的な使用法について説明しました。メイクファイルを使用することで、C++ プログラムのビルドプロセスを効率化することができます。