qmake-run命令仅在调试模式下运行

qmake run command only in debug mode, how?

本文关键字:模式 运行 调试 命令 qmake-run      更新时间:2023-10-16

这是这个问题的一种延续。我想运行

win32:LIBS ~= s/-l(.*)/-l1d/g

仅适用于调试构建,因为其思想是在调试模式下将d附加到库名称。

我试过

win32:debug:LIBS ~= s/-l(.*)/-l1d/g

但它也在发布模式下执行。

您需要使用CONFIG(debug, debug|release),而不是简单测试debug的存在。CONFIG变量是特殊的,因为它可以有多个debugrelease条目,但只有最后一个计数

因此,即使在发布模式下,CONFIG也可能看起来像something, debug, something, releaserelease"获胜",因为它是最后一个,但范围测试并不知道这一点。

这是qmake的一个怪癖。如果你知道先去哪里看,它甚至是有文档的:/

由于值的顺序在CONFIG变量中很重要(也就是说,最后一个集合将被视为互斥值的活动配置),可以使用第二个参数来指定要考虑的值集合。例如:

我通常就是这样做的:

 CONFIG(debug, debug|release) {
    unix:  TARGET = $$join(TARGET,,,d)
    win32: TARGET = $$join(TARGET,,,d)
 }

平台之所以存在,是因为最初我想对不同的平台使用不同的约定,并在这里举一个的例子

您可以在为libs/apps 设置目标名称后立即添加此规则

普通布局在.pro文件中有这个规则,用于生成库和类似的东西:

CONFIG(debug, debug|release) {
    unix:   LIBS += -L../libs -L../../libs -lyourlibnamed
    win32: LIBS += -L../libs -L../../libs -lyourlibnamed    
} else {
    unix:   LIBS += -L../libs -L../../libs -lyourlibname
    win32: LIBS += -L../libs -L../../libs -lyourlibname 
}

在.pri文件中