如何在不编辑 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中,CXXFLAGS
、CFLAGS
等常用变量保留给用户通过命令行或环境设置,内部makefile flags放在不同的变量,例如 AM_CFLAGS
。然后编译对象的方法使用两个变量,比如 $(CC) $(AM_CFLAGS) $(CFLAGS) ...
我对 qt 一无所知,所以我不能说它们是否有一组类似的保留 makefile 变量,但您可以查看 qt 文档或您生成的 makefile 配方以查看。
对于以后阅读本文的任何人,我找到的解决方案是调用 qmake <project file> DEFINES+="SWVERSION=xxxx"
。希望有人觉得这有帮助。
我正在为 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中,CXXFLAGS
、CFLAGS
等常用变量保留给用户通过命令行或环境设置,内部makefile flags放在不同的变量,例如 AM_CFLAGS
。然后编译对象的方法使用两个变量,比如 $(CC) $(AM_CFLAGS) $(CFLAGS) ...
我对 qt 一无所知,所以我不能说它们是否有一组类似的保留 makefile 变量,但您可以查看 qt 文档或您生成的 makefile 配方以查看。
对于以后阅读本文的任何人,我找到的解决方案是调用 qmake <project file> DEFINES+="SWVERSION=xxxx"
。希望有人觉得这有帮助。