のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

私の使うMakefileの設定(C++)

Sponsored Links

皆さんこんにちは
お元気ですか。私は元気です。

さて、今回はMakefileについてです。
Makefileは自動的にコンパイルするには素晴らしいツールの一つでございますが、
結構書くのは手間取るものです。

ということで参考にしながらある程度まともに動くものを作ってみました。

CXX = g++
CFLAGS = -O2 -Wall
CXXFLAGS = -O2 -Wall
SOURCE := $(shell ls *.cpp)
HEADER := $(shell ls *.hpp)
OBJS := $(SOURCE:.cpp=.o)
TARGET = test

all: clean $(TARGET)

$(TARGET):$(OBJS)
	$(CXX) -o $@ $(OBJS)

.c.o:
	$(CC) $(CFLAGS) -c $^
.cpp.o:
	$(CXX) $(CXXFLAGS) -c $^

clean:
	rm -f *.o

これを動かすと同じディレクトリにあるファイルに対して分割コンパイルを実行し、最後に実行ファイルを生成する動作を行います。

いくつかポイントがあるのでご紹介します。

1.同じディレクトリのcppファイルを取得する。
SOURCE = $(shell ls *.cpp)を実行することで、同じディレクトリに存在するcppファイルをコンパイルし、オブジェクトファイルを生成します。

2.OBJS := $(SOURCE:.cpp=.o)
.cppを.oに変更した変数をOBJSに入れます。

3.allを実行することでリコンパイルし直します。

4..cpp.o:によってコンパイルコマンドを設定する。