【发布时间】:2016-03-29 07:01:10
【问题描述】:
我有一个简单的问题。我做了一个简单的 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,请read its manual 了解更多信息。 -
make实际上有很多隐式规则,例如,在您的示例中,$(CC)隐式设置为您环境的cc。 -
不要将
CC变量更改为g++,您只需在链接行中使用$(CXX)。