如何使用 GNU Make 从同一源代码编译程序的第二个版本

How to compile a second version of a program from the same source using GNU Make?

本文关键字:编译程序 源代码 第二个 版本 何使用 GNU Make      更新时间:2023-10-16

我想从同一来源编译我的程序的第二个版本(使用 #ifdef TESTS 等),即:

prog.cpp --(compile)--> prog-tests

我可以通过以下Makefile规则来实现这一点:

prog-tests: prog.cpp
       $(LINK.cpp) -DTESTS $^ $(LOADLIBES) $(LDLIBS) -o $@

prog-tests: CPPFLAGS += -DTESTS
prog-tests: prog.cpp
        $(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@

首选此版本中的哪个版本/最佳实践?我想尽可能多地使用隐式规则。

(我正在使用GNU Make 4.0。

如果要

使用不同的编译器标志将同一源文件编译为目标文件,则必须将这些目标文件生成到不同的目录中。

但是,命令行会跳过目标文件的创建,因为它们在一个步骤中进行编译和链接(不会生成任何对象文件)。因此,在此处添加额外编译器标志的方式几乎没有区别。