QMake:范围如何工作?
由于某些奇怪的原因,我无法让 QMake 中的范围正常工作。这是我的项目文件中的一些代码:
debug {
QMAKE_CXXFLAGS_DEBUG += -g3 -O0
message ("Some debug output")
}
release {
DEFINES += QT_NO_DEBUG
DEFINES += QT_NO_DEBUG_OUTPUT
message ("No debug output")
}
但是当我在调试模式下编译它时,这是我得到的 gcc 命令行:
g++ -c -g -g3 -O0 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DLIBPROVERIM_LIBRARY -DQT_NO_DEBUG -DQT_NO_DEBUG_OUTPUT -DWINDOWS -DQT_DLL -DQT_SQL_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"c:\Qt\2010.05\qt\include\QtCore" -I"c:\Qt\2010.05\qt\include\QtNetwork" -I"c:\Qt\2010.05\qt\include\QtGui" -I"c:\Qt\2010.05\qt\include\QtXml" -I"c:\Qt\2010.05\qt\include\QtSql" -I"c:\Qt\2010.05\qt\include" -I"c:\Qt\2010.05\qt\include\ActiveQt" -I"debug" -I"..\proverim" -I"." -I"c:\Qt\2010.05\qt\mkspecs\win32-g++" -o debug\PForm.o ..\proverim\PForm.cc
请注意,我尝试清理我的项目,以及手动删除 makefile。现在为什么它从两个范围中获取定义?另外,我没有看到任何消息,它们应该在哪里?
For some weird reason I can't get scopes in QMake to work. Here's some code in my project file:
debug {
QMAKE_CXXFLAGS_DEBUG += -g3 -O0
message ("Some debug output")
}
release {
DEFINES += QT_NO_DEBUG
DEFINES += QT_NO_DEBUG_OUTPUT
message ("No debug output")
}
But when I compile it in debug mode, here's the gcc command line I get:
g++ -c -g -g3 -O0 -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DLIBPROVERIM_LIBRARY -DQT_NO_DEBUG -DQT_NO_DEBUG_OUTPUT -DWINDOWS -DQT_DLL -DQT_SQL_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"c:\Qt\2010.05\qt\include\QtCore" -I"c:\Qt\2010.05\qt\include\QtNetwork" -I"c:\Qt\2010.05\qt\include\QtGui" -I"c:\Qt\2010.05\qt\include\QtXml" -I"c:\Qt\2010.05\qt\include\QtSql" -I"c:\Qt\2010.05\qt\include" -I"c:\Qt\2010.05\qt\include\ActiveQt" -I"debug" -I"..\proverim" -I"." -I"c:\Qt\2010.05\qt\mkspecs\win32-g++" -o debug\PForm.o ..\proverim\PForm.cc
Note that I tried cleaning my project, as well as manually removing makefiles. Now why does it take defines from both scopes? Also, I don't see any messages, where are they supposed to be?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我也有同样的问题。为了解决这个问题,我使用了 CONFIG“函数”而不是范围。
.pro 文件的该部分将是:
在一个简单的“HelloWorld”项目中尝试过,一切似乎都工作正常。
I had the same problem. To solve it I used the CONFIG "function" instead of the scopes.
That section of your .pro file would be:
Tried it in a simple "HelloWorld" project and everything seemed to work fine.
还有另一个名为 debug_and_release 的配置选项,它允许您同时构建两种模式。在这种情况下,您的两个范围都被触发是正确的。
尝试将
CONFIG=debug
添加到您的初始 qmake 命令中;它应该覆盖任何自动默认值并限制您进入调试模式。作为一种调试措施,您还可以尝试通过 .pro 文件中的
message($$CONFIG)
输出 CONFIG 的全部内容。这些消息是在 qmake 运行时打印的,而不是在编译 makefile 时打印的。There is another config option called debug_and_release which allows you to build both modes simultaneously. In that case, it's correct that both of your scopes are getting triggered.
Try adding
CONFIG=debug
to your initial qmake command; it should override any automatic defaults and limit you to debug mode.As a debugging measure, you could also try outputting the entire contents of CONFIG via
message($$CONFIG)
in your .pro file. The messages are printed when qmake is run, not when the makefiles are compiled.