qmake run命令只在调试模式下,怎么样?

时间:2016-04-06 02:46:27

标签: c++ qt c++11 qt4 qt5

这是this question的延续。我想跑

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

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

我试过

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

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

2 个答案:

答案 0 :(得分:2)

您需要使用subprocess.call('/usr/bin/id')而非简单测试才能显示CONFIG(debug, debug|release)debug变量很特殊,因为它可以包含多个CONFIGdebug条目,但只有最后一个计数

因此,即使在发布模式下,您的CONFIG可能看起来像releasesomething, debug, something, release"胜出"因为它是最后一个,但范围测试并不知道。

这是qmake的怪癖。如果你知道首先要去哪里,它甚至可以记录:/

  

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

答案 1 :(得分:0)

这就是我通常做的事情:

 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文件中

相关问题