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

时间:2014-11-25 09:33:46

标签: c++ makefile gnu-make

我想从同一来源编译我的程序的第二个版本(使用#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。)

1 个答案:

答案 0 :(得分:1)

如果您想使用不同的编译器标志将相同的源文件编译到目标文件中,则必须将这些目标文件生成到不同的目录中。

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