8

这是整个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

4 回答 4

13

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

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

我做了一个辅助函数,它在我的项目中运行良好:

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

print("This message should appear only once")
于 2013-10-01T14:39:25.157 回答
10

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

于 2013-06-28T09:52:29.610 回答
0

将此行添加到您的 .pro 文件中

CONFIG -= debug_and_release debug_and_release_target 

qmake 将只生成一个 Makefile 并且 .pro 文件将只被评估一次。

于 2013-07-12T14:01:32.443 回答
0

你可以这样做:

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

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

于 2019-08-31T06:47:13.577 回答