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

标签 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。)

最佳答案

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

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

关于c++ - 如何使用 GNU Make 从同一源代码编译程序的第二个版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27123067/

相关文章:

c++ - 指向成员变量的指针作为静态成员

c++ - 如何使用 C++ 在 ActiveDirectory 中获取 maxpwdAge 属性值?

android - 将外部 JAR 添加到 Android AOSP 构建时出错

c++ - make/gmake 的条件依赖

makefile - GNU make 4.1 : Missing separator when $(if . ..) 在定义的函数中为真

c++ - 创建以 vector/列表迭代器为键的 map

c++ - Windows 10 上原生 C++ 应用程序的自定义标题栏颜色

c - 为什么 makefile 坚持编译它不应该编译的东西?

c++ - makefile 中 undefined reference

makefile - GNU 使 : rebuild when intermediate files are missing