繁体   English   中英

如何在不编辑 Makefile 的情况下将 append 转换为 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>

我希望有一个更简单的解决方案。 有什么办法可以从命令行简单地将 append 转换为 CXXFLAGS 而无需重写 Makefile?

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

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

override CXXFLAGS += <flags>

但是,通常的做法是 makefile 提供专门保留的变量,供用户在命令行上覆盖。 例如在 automake 生成的 makefile 中,诸如CXXFLAGSCFLAGS等公共变量保留供用户通过命令行或环境设置,而内部 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM