需要一致的调试常量来触发所有平台上的操作

时间:2014-09-23 22:49:09

标签: c++ linux macos qt debug-symbols

我试图阻止在发布中显示某些错误消息(如我的问题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)

但是在Linux上检查NDEBUG,使用qmake构建项目时,NDEBUG无法识别......

所以我可以在专业文件中创建一个常量:

unix:CONFIG(release):DEFINES += NO_RELEASE_ERRORS

这适用于Linux和Windows。但是当我尝试使用mac时,在调试和发布配置之间切换似乎都给了我定义的常量......

我在MAC上安装了Qt 4.8,但其安装可能没有调试符号......

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

1 个答案:

答案 0 :(得分:1)

TL; DR CONFIG中测试调试或发布时,请使用两个参数测试函数CONFIG(x,debug|release),其中xdebug }或release,具体取决于您要测试的内容。

CONFIG(release)测试错误。您需要CONFIG(release,debug|release)。请记住,debug变量中有多个releaseCONFIG条目(只需将其打印出来并亲自查看)。只有最后一个才算重要。这就是为什么你应该向CONFIG测试函数提供第二个参数 - 它只会在 last 条目上匹配debug|release,如果那个条目不是release {1}},测试失败。