2015-10-25 52 views
0

我用我自己的值覆盖了一些QMAKE变量。但是,当我检查QMake生成的makefile时,我可以看到QMake正在增加一些额外的值,并且我找不到一种方法来阻止或清除变量。Makefile生成:如何防止QMake设置编译标志

这里是我的项目文件的样本:

marvell_release { 
    QMAKE_CC=/usr/local/arm-marvell-linux-gnu/bin/arm-marvell-linux-gnu-gcc 
    QMAKE_CXX=/usr/local/arm-marvell-linux-gnu/bin/arm-marvell-linux-gnu-g++ 
    QMAKE_CFLAGS=-pipe 
    QMAKE_CXXFLAGS=-pipe 
    QMAKE_LINK=/usr/local/arm-marvell-linux-gnu/bin/arm-marvell-linux-gnu-ld 
    QMAKE_LFLAGS= 
} 

,这里是从项目文件QMAKE产生什么:

CC   = /usr/local/arm-marvell-linux-gnu/bin/arm-marvell-linux-gnu-gcc 
CXX   = /usr/local/arm-marvell-linux-gnu/bin/arm-marvell-linux-gnu-g++ 
DEFINES  = 
CFLAGS  = -pipe -O2 -Wall -W -fPIE $(DEFINES) 
CXXFLAGS  = -pipe -O2 -Wall -W -fPIE $(DEFINES) 
INCPATH  = -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 
LINK   = /usr/local/arm-marvell-linux-gnu/bin/arm-marvell-linux-gnu-ld 
LFLAGS  = -Wl,-O1 

正如你所看到的,LFLAGS变量包含两个选项我没有指定,我想删除。有谁知道如何做到这一点,或解释为什么这些值被追加?

+1

您是否尝试过使用' - ='在[这里](http://stackoverflow.com/a/15482574/1062948)的例子吗?不知道它是否会工作,但值得一试。例如,'QMAKE_LFLAGS - = -W1,-O1'或'QMAKE_LFLAGS_RELEASE - = -W1,-O1'。 – crayzeewulf

+0

这些是有用的默认值:-O2用于发布版本,-O0用于调试;一些基本的警告等等。即使您的.pro文件尽可能小,qmake也会设置这些值。所以问题是,究竟哪个值是问题以及如何覆盖它。 –

+0

@crazeewulf, 是的,我尝试了 - =并没有奏效。我现在只是尝试了QMAKE_LFLAGS_RELEASE,它也没有工作。 –

回答

1

自定义自己的mkspec为QMAKE,参考可能是:https://github.com/qtproject/qtbase/tree/5.5/mkspecs/devices

+0

这是针对我的问题的一种可能的解决方案,但此解决方案有其缺点:Qt更新后,我将需要重新安装新版本的mkspec。 我真的是一个基于项目的解决方案。 –

相关问题