1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[メモ]Makefileとは

Last updated at Posted at 2023-05-03

Makefileは、コンパイル、依存関係の管理、インストールなどのルールを記述しておくためのファイルであり、makeコマンドが読み込んで処理を行う。
Makefileには、ファイルの生成手順やプログラムを構成している同士の関係を記述する。

Makefileの書き方

Makefileの例

CC = gcc
CFLAGS = -Wall
LDFLAGS = -lwiringPi

TARGET = my_program
SRCS = $(wildcard *.c)
OBJS = $(SRCS:.c=.o)

all: $(TARGET)

$(TARGET): $(OBJS)
	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

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

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

文法の説明

Makefileでは、以下のような特別な変数を使用することができる。

  • CC: Cコンパイラのパスを指定する変数
  • CFLAGS: コンパイルオプションを指定する変数
  • LDFLAGS: リンクオプションを指定する変数
  • TARGET:Makefile内で定義される変数。Makefileがビルドするターゲットの名前を示す。通常、Makefileは複数のターゲットを定義することができ、各ターゲットは独自のルールと依存関係を持ちます。TARGET は、Makefile内で定義されるターゲット名を表すために使用される変数です。
  • LIBS: リンクするライブラリを指定する変数
  • $@: ターゲット名を表す特別な変数
  • $<: 依存関係の中で最初のファイル名を表す特別な変数
  • $^: 依存関係に含まれるすべてのファイル名を表す特別な変数
  • SUBDIRS:Makefileでサブディレクトリを指定するための変数。この変数に指定されたサブディレクトリに対して、Makefileが再帰的に実行する。
SUBDIRS = subdir1 subdir2 subdir3
  • .PHONY: Makefileで実行するタスクを定義するための特別な目印。.PHONYで定義されたターゲットは、必ず実行されるようになります。たとえば、次のように書くことで、Makefile内で clean というターゲットを定義しています。
.PHONY: clean
clean:
    rm -f *.o myprogram

このようにすることで、make cleanと実行すると、常に"rm -f *.o myprogram"が実行される。.PHONYは、実ファイル名と同じ名前を持つターゲットについて、その名前のファイルがすでに存在している場合、そのファイルをターゲットとして実行しないようにするために使用されます。

Regenerate response

/参考
https://linuc.org/study/knowledge/542/#:~:text=%E3%80%8CMakefil,%E5%87%A6%E7%90%86%E3%82%92%E8%A1%8C%E3%81%84%E3%81%BE%E3%81%99%E3%80%82

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?