使用 make 命令编译类文件

Using the make command to compile class files

本文关键字:文件 编译 命令 make 使用      更新时间:2023-10-16

在我目前的计算机科学项目中,我不得不使用大量的类和类文件来帮助分解程序的巨大负载。但是,我想创建一个能够在不使用中间".o"步骤的情况下编译依赖项的生成文件。我已经有:

%: %.cpp
    g++ -std=c++11 $< -o $@

是的,我必须使用 c++11,而不是 14 或 17。但是有没有办法做到这一点,以便我可以编写make foo.cpp bar.cpp并让它g++ -std=c++11 foo.cpp bar.cpp -o foo运行?

为了

做你想做的事情,你必须将所有*.cpp文件列为foo的依赖项,并执行make foo(或将foo作为Makefile中的第一个目标(来编译它。

foo: foo.cpp bar.cpp
    g++ -std=c++11 $^ -o $@

$^代表所有先决条件。

但是,为什么不想使用和中间步骤?这样做,每次任何源文件更改时,您都会重新编译并重新链接整个项目。使用*.o可以避免这种情况:

foo: foo.o bar.o
    g++ -std=c++11 $^ -o $@
%.o: %.cpp
    g++ -std=c++11 $< -o $@

这样,您将避免不必要的重新编译。

(您也可以省略%.o规则,因为 make 具有默认已定义的内置规则(