我想从相同的源(使用 #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。)
最佳答案
如果您想使用不同的编译器标志将相同的源文件编译成目标文件,则这些目标文件必须生成到不同的目录中。
但是,您的命令行在一步编译和链接时会跳过目标文件的创建(不会生成目标文件)。因此,在此处添加额外编译器标志的方式几乎没有区别。
关于c++ - 如何使用 GNU Make 从同一源代码编译程序的第二个版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27123067/