我想从同一来源编译我的程序的第二个版本(使用#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。)
答案 0 :(得分:1)
如果您想使用不同的编译器标志将相同的源文件编译到目标文件中,则必须将这些目标文件生成到不同的目录中。
但是,您的命令行会跳过创建目标文件,因为它们只需一步编译和链接(不会生成任何目标文件)。因此,在这里添加额外编译器标志的方式几乎没有区别。