qmake没有正确读取我的.pro

时间:2014-05-29 01:21:59

标签: qt-creator qmake

最近我注意到我的一个项目中出现了编译问题(请参阅有关它的一些评论here,但请注意,没有必要阅读该帖子)。经过一些工作,我确实设法找到了问题:看起来我的qmake并没有相应地读取我的.pro文件,更具体地说,在一个特定的时刻,其中包括一些特定的libs" debug"或"发布"范围:

win32 {
    LIBS += -lpsapi

    debug {
        LIBS += C:/Qt/Qwt-6.1.0/lib/qwtd.dll \
            $${MLOGGER}/build/debug/mLogger.dll \      
            $${MSHARE_LIB}/build/debug/mShareLib.dll  
        DEFINES += DEBUG
    }

    release {
        LIBS += C:/Qt/Qwt-6.1.0/lib/qwt.dll \
            $${MLOGGER}/build/release/mLogger.dll \
            $${MSHARE_LIB}/build/release/mShareLib.dll
        DEFINES += RELEASE \
           QT_NO_DEBUG \
           QT_NO_DEBUG_OUTPUT
    }
} # win32

根据Qt助手,上述代码应该有效。以下是Qt Assistant作为有效代码提供的嵌套作用域示例之一:

win32 {
    debug {
        CONFIG += console
    }
}

可能有什么不对? :(我不知道。我不记得在Qt Creator中找到任何配置,或者在其他地方找到了这样的" qmake功能"被禁用。

我很高兴得到任何帮助。

Momergil

1 个答案:

答案 0 :(得分:1)

范围与CONFIG变量密切相关。正如您可以阅读manual

  

CONFIG变量中存储的值由特殊处理   QMAKE。每个可能的值都可以用作a的条件   范围。

因此,使用 debug 作用域等同于测试 debug 是否放入CONFIG变量。使用 release 作用域等同于测试 release 是否放入CONFIG变量。 不幸的是,CONFIG变量可能包含冲突的选项,例如 release debug 仅仅知道 debug 在CONFIG中或发布在CONFIG中,因为两者都可以在CONFIG中。您需要知道的是哪个选项是有效。可以在此处找到进一步的解释:QMake CONFIG() function and 'active configuration'