如何在Makefile中添加CXXFLAGS而不编辑Makefile?



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

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

CXXFLAGS      = <flags>

:

CXXFLAGS      += <flags>

我希望会有一个更简单的解决方案。是否有任何方法我可以简单地从命令行追加到CXXFLAGS而不重写Makefile?

或者,我真正的问题是在构建时定义SWVERSION(因为它依赖于构建时间戳)。你知道一个更好的方法来定义在运行时,而不是传递给CXXFLAGS?

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

override CXXFLAGS += <flags>
然而,通常的方式是,makefile提供了专门为用户在命令行上覆盖而保留的变量。例如,在自动生成的makefile中,CXXFLAGSCFLAGS等通用变量保留给用户通过命令行或环境设置,而内部makefile标志则放在不同的变量中,如AM_CFLAGS。然后,编译对象的方法使用这两个变量,如$(CC) $(AM_CFLAGS) $(CFLAGS) ...

我对qt一无所知,所以我不能说他们是否有类似的保留makefile变量集,但你可以检查qt文档,或者你生成的makefile食谱,看看。

对于将来阅读本文的任何人,我发现的解决方案是调用qmake <project file> DEFINES+="SWVERSION=xxxx"。希望这篇文章对大家有帮助。

最新更新