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

tmp*_*ies 7 qt qmake vcproj

这是整个pro文件:

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

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
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

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

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

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

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

为什么消息打印三次?

ZeR*_*emz 11

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

!build_pass:message("This message should appear only once")
Run Code Online (Sandbox Code Playgroud)

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

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

print("This message should appear only once")
Run Code Online (Sandbox Code Playgroud)


thu*_*uga 9

因为缺省情况下,qmake将创建3所生成文件:Makefile,Makefile.debug,和Makefile.release.这是因为默认配置是在调试和发布模式下构建项目.如果添加CONFIG -= debug_and_release.pro文件中,则只能看一次消息.您可以在这里这里找到更多信息.