我有一个简单的问题。我做了一个像这样简单的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
。
即使我错过了将源文件转换为objectfile的过程
(比如g ++ -c Str.cpp),效果很好。
我很好奇为什么这个Makefile有效。它会自动制作对象文件吗?
答案 0 :(得分:3)
编译C ++程序
没有是从n.cc, n.cpp 或nC自动生成的,配方格式为'$(CXX)$(CPPFLAGS)$(CXXFLAGS ) -C'。我们建议您对C ++源文件使用后缀“.cc”而不是“.C”。
答案是肯定的,它为每个源文件在同一目录中创建目标文件(然后将它们全部与您的规则链接到最终的可执行文件)。