最近我注意到我的一个项目中出现了编译问题(请参阅有关它的一些评论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
答案 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'。