我有一个简单的问题。我制作了一个简单的Makefile,就像这样:
OBJ = main.o Str.o Out.o
CC = g++
TAR = main
$(TAR):$(OBJ) Header.h
$(CC) -o $(TAR) $(OBJ)
clean:
rm -f $(OBJ) $(TAR)
我当前目录中有Str.cpp
、Out.cpp
和main.cpp
文件。即使我错过了将源文件转换为目标文件的过程(例如g++ -c Str.cpp),它仍然可以正常工作。
我很好奇这个Makefile是如何工作的。它是否会自动创建目标文件?
make
程序有隐式规则,因此它知道如何从源文件创建目标文件。如果你在Linux上,你很可能拥有GNU Make,请阅读其手册以获取更多信息。 - Some programmer dudemake
实际上有很多隐含规则,比如在你的例子中,$(CC)
隐式设置为你环境中的cc
。 - Leandros$(CXX)
,而不是将CC
变量更改为g++
。 - rodrigo