如何在不编辑 Makefile 的情况下附加到 Makefile 中的 CXXFLAGS?

How to append to CXXFLAGS in Makefile without editing Makefile?

我正在为 Qt 应用程序编写构建脚本。该脚本首先在 .pro 文件上调用 qmake,然后运行 ​​make CXXFLAGS=-DSWVERSION=xxxx.

问题在于它覆盖了 Makefile 中已经定义的 CXXFLAGS。目前,我知道解决这个问题的唯一方法是编辑 Makefile 并更改它:

CXXFLAGS      = <flags>

为此:

CXXFLAGS      += <flags>

我希望有一个更简单的解决方案。有什么方法可以在不重写 Makefile 的情况下从命令行简单地附加到 CXXFLAGS?

或者,我真正的问题是在构建时定义 SWVERSION(因为它取决于构建时间戳)。您知道在运行时定义它而不是将其传递给 CXXFLAGS 的更好方法吗?

您建议的更改无论如何都行不通:命令行上设置的值完全覆盖 makefile 中设置的值,即使该值附加了 +=。你可以这样做并且它会起作用:

override CXXFLAGS += <flags>

但是,通常 完成的方式是 makefile 提供专门保留供用户在命令行上覆盖的变量。例如在automake-generated makefile中,CXXFLAGSCFLAGS等常用变量保留给用户通过命令行或环境设置,内部makefile flags放在不同的变量,例如 AM_CFLAGS。然后编译对象的方法使用两个变量,比如 $(CC) $(AM_CFLAGS) $(CFLAGS) ...

我对 qt 一无所知,所以我不能说它们是否有一组类似的保留 makefile 变量,但您可以查看 qt 文档或您生成的 makefile 配方以查看。

对于以后阅读本文的任何人,我找到的解决方案是调用 qmake <project file> DEFINES+="SWVERSION=xxxx"。希望有人觉得这有帮助。