[英]How to append to CXXFLAGS in Makefile without editing Makefile?
我正在为 Qt 应用程序编写构建脚本。 该脚本首先在 .pro 文件上调用qmake
,然后运行make CXXFLAGS=-DSWVERSION=xxxx
。
这个问题是它覆盖了 Makefile 中已经定义的 CXXFLAGS。目前,我知道解决这个问题的唯一方法是编辑 Makefile 并更改它:
CXXFLAGS = <flags>
对此:
CXXFLAGS += <flags>
我希望有一个更简单的解决方案。 有什么办法可以从命令行简单地将 append 转换为 CXXFLAGS 而无需重写 Makefile?
或者,我真正的问题是在构建时定义SWVERSION
(因为它取决于构建时间戳)。 您知道在运行时定义它而不是将其传递给 CXXFLAGS 的更好方法吗?
您建议的更改无论如何都行不通:命令行上设置的值完全覆盖 makefile 中设置的值,即使该值附加了+=
也是如此。 你可以这样做并且它会起作用:
override CXXFLAGS += <flags>
但是,通常的做法是 makefile 提供专门保留的变量,供用户在命令行上覆盖。 例如在 automake 生成的 makefile 中,诸如CXXFLAGS
、 CFLAGS
等公共变量保留供用户通过命令行或环境设置,而内部 makefile 标志被放入不同的变量中,如AM_CFLAGS
。 然后编译对象的方法使用两个变量,比如$(CC) $(AM_CFLAGS) $(CFLAGS)...
我对 qt 一无所知,所以我不能说他们是否有一组类似的保留 makefile 变量,但您可以查看 qt 文档,或您生成的 makefile 食谱,看看。
对于以后阅读本文的任何人,我找到的解决方案是调用qmake <project file> DEFINES+="SWVERSION=xxxx"
。 希望有人觉得这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.