繁体   English   中英

qmake 仅在调试模式下运行命令,如何?

[英]qmake run command only in debug mode, how?

这是这个问题的延续。 我想跑

win32:LIBS ~= s/-l(.*)/-l\1d/g

仅用于调试版本,因为这个想法是在调试模式下将d附加到 lib 名称。

我试过

win32:debug:LIBS ~= s/-l(.*)/-l\1d/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 文件中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM