Qt qmake处理我的pro文件三次,而不是一次
这是整个Qt qmake处理我的pro文件三次,而不是一次,qt,qmake,vcproj,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
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工具的环境
项目消息:此消息只应出现一次
项目消息:此消息只应出现一次
项目消息:此消息只应出现一次
为什么要打印三次消息?因为默认情况下,
qmake
将创建三个生成文件:Makefile
、Makefile.debug
和Makefile.release
。这是因为默认配置是在调试和发布模式下构建项目。如果将CONFIG-=debug\u和\u release
添加到.pro
文件中,您应该只会看到一次消息。您可以找到更多信息并。将此行添加到.pro文件中
CONFIG -= debug_and_release debug_and_release_target
qmake只会生成一个Makefile,而.pro文件只会被计算一次。实际上,除了qmake第一次解析.pro文件外,“build\u pass”条件始终为true,因此以下操作有效:
!build_pass:message("This message should appear only once")
我制作了一个助手函数,它在我的项目中运行良好:
defineTest(print) {
!build_pass:message($$1)
}
print("This message should appear only once")
您可以这样做:
Release:message("This message should appeare only once!!!")
如果您处于relase模式,它将运行一次,以便调试更改为debug:…