qmake处理我的pro文件三次而不是一次

时间:2013-06-28 08:36:28

标签: qt qmake vcproj

这是整个pro文件:

message("This message should appeare only once!!!")
CONFIG += qt
SOURCES += src/main.cpp

我以下列方式调用qmake

set QMAKESPEC=win32-msvc2008
set QTDIR=c:\Qt\4.8.4_vs2008\

call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86
call "%QTDIR%\bin\qmake.exe" -tp vc Server.pro

我得到以下输出:

  

设置使用Microsoft Visual Studio 2008 x86工具的环境。

     

项目消息:此消息应该只出现一次!!!

     

项目消息:此消息应该只出现一次!!!

     

项目消息:此消息应仅出现一次!!!

为什么邮件打印三次?

4 个答案:

答案 0 :(得分:10)

实际上,条件“build_pass”始终为true,除了qmake第一次解析.pro文件,因此以下工作:

!build_pass:message("This message should appear only once")

我做了一个帮助函数,在我的项目中工作正常:

defineTest(print) {
  !build_pass:message($$1)
}

print("This message should appear only once")

答案 1 :(得分:8)

因为默认情况下,qmake会创建3个makefile:MakefileMakefile.debugMakefile.release。这是因为默认配置是在调试和发布模式下构建项目。如果您将CONFIG -= debug_and_release添加到.pro文件中,则只能看一次该消息。您可以找到更多信息herehere

答案 2 :(得分:0)

将此行添加到.pro文件

CONFIG -= debug_and_release debug_and_release_target 

qmake只会生成一个Makefile,而.pro文件只会被评估一次。

答案 3 :(得分:0)

您可以这样:

Release:message("This message should appeare only once!!!")

如果您处于释放模式,它将运行一次,以将调试更改为Debug:...