2014-09-23 17 views
0

我试图防止在发布中显示某些错误消息(如我的问题Errors showing in Qt application - how to not display them in Release中所述)。需要一致的调试常量来触发所有平台上的操作

我正在使用Qt中的应用程序...在Windows,Mac OS X和Linux上。

对于Windows检查符号很简单:

#if defined (Q_OS_WIN32) && !defined (NDEBUG) 

但检查NDEBUG在Linux上,使用的qmake时,NDEBUG无法识别内置项目...

所以我可以创建pro文件中的一个常量:

unix:CONFIG(release):DEFINES += NO_RELEASE_ERRORS 

这对Linux和Windows都有效。但是,当我试图在Mac上,调试和发布配置之间的切换都似乎给我定义的常量...

我对MAC Qt安装4.8,但它的安装可能没有调试符号...

如何在MAC上找到可以触发或不显示错误的DEBUG和RELEASE类型的符号?

回答

1

TL; DR当测试进行调试或释放CONFIG,使用这两个参数测试功能CONFIG(x,debug|release),其中x要么debugrelease,这取决于你要测试什么。

CONFIG(release)测试是错误的。你需要CONFIG(release,debug|release)。请记住,CONFIG变量中有多个debugrelease条目(只需将其打印出来并亲自查看)。这只是最后一个。这就是为什么你应该提供CONFIG测试功能的第二个参数 - 它只会对最后一个条目起作用,以匹配debug|release,如果该条目不是release,测试将失败。

+0

我想我对此有更好的理解 - 所以如果我想用相同的命令检查“debug”,我会说“CONFIG(release,debug | debug)”? – Thalia 2014-09-24 17:18:56

+0

@Thalia你会说'CONFIG(debug,release | debug)'。说'debug | debug'是没有意义的,因为这是equals的一个替代方案,并减少到'debug'。 “CONFIG”的第一个参数就是你正在检查的内容。第二个参数是要检查的CONFIG条目 - 这些条目中最新的* *与第一个参数进行比较,并返回比较结果。 – 2014-09-24 17:21:20

+0

非常感谢您的回答以及额外的解释和编辑 – Thalia 2014-09-24 17:34:20

相关问题