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 - 什么是 .dbg 文件以及它们与 gcc 中的 `-g` 选项有什么关系

linux - GNU 生成文件。按条件执行一些语句

c++ - 退出整个递归堆栈

c++ - 使用类似 Set/Get 的方法或 GetSet 组合函数

c++ - 如何将带有 SPL 的 STM32F3 代码移植到 STM32F7

c++ - Cmake 包含目录

makefile - 如何强制 make 始终更新并重新读取包含的 makefile?

bash - 在 make 中取消设置变量时获取默认值

makefile - 无法在 makefile 中打印换行符