2016-08-17 9 views
0

メイクファイルをmain.cppに実行しても何もしません。メイクファイルを2回コンパイルする

CXX = g++ 
CXXFLAGS = -g -std=c++11 -stdlib=libc++ -Wall 

SRCDIR = . 
TARGET = tfm 

SRCS = $(SRCDIR)/main.cpp 
OBJS = $(SRCS:.cpp=.o) 

all: $(TARGET) 
$(TARGET): $(OBJS) 
    $(CXX) $(CXXFLAGS) -o [email protected] $^ 

clean: 
    $(RM) $(TARGET) $(OBJS) 

そして、コンパイルが2回行われました。

g++ -g -std=c++11 -stdlib=libc++ -Wall -c -o main.o main.cpp 
g++ -g -std=c++11 -stdlib=libc++ -Wall -o tfm main.o 

どうしてですか?

答えて

2

そして、コンパイルが2回行われました。

いいえ、そうではありませんでした。最初の行はmain.cppmain.oにコンパイルしています(*.cpp*.oに変換する方法については、組み込みのmakeルールによってトリガーされます)。 リンクの手順を示し、main.oをライブラリにリンクして実行可能ファイルtfmを生成します。

つまり、すべてがすばらしく美しいです。

0

ソースコード上でmakeを実行することはあまり意味がありません。あなたは、あなたが生成したいものをmakeに伝えなければなりません。そしてあなたはソースを生成したくありません。

適合は2回行われません。最初の行は2行目のリンクをコンパイルします。

関連する問題