这个makefile如何制作objectfiles?

时间:2016-03-29 07:01:11

标签: c++ c makefile

我有一个简单的问题。我做了一个像这样简单的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.cppOut.cppmain.cpp。 即使我错过了将源文件转换为objectfile的过程 (比如g ++ -c Str.cpp),效果很好。

我很好奇为什么这个Makefile有效。它会自动制作对象文件吗?

1 个答案:

答案 0 :(得分:3)

10.2 Catalogue of Built-In Rules

  

编译C ++程序

     

没有是从n.cc, n.cpp 或nC自动生成的,配方格式为'$(CXX)$(CPPFLAGS)$(CXXFLAGS ) -C'。我们建议您对C ++源文件使用后缀“.cc”而不是“.C”。

答案是肯定的,它为每个源文件在同一目录中创建目标文件(然后将它们全部与您的规则链接到最终的可执行文件)。