这是this question的延续。我想跑
win32:LIBS ~= s/-l(.*)/-l\1d/g
仅适用于调试版本,因为我们的想法是在调试模式下将d
附加到lib名称。
我试过
win32:debug:LIBS ~= s/-l(.*)/-l\1d/g
但它也在发布模式下执行。
答案 0 :(得分:2)
您需要使用subprocess.call('/usr/bin/id')
而非简单测试才能显示CONFIG(debug, debug|release)
。 debug
变量很特殊,因为它可以包含多个CONFIG
和debug
条目,但只有最后一个计数。
因此,即使在发布模式下,您的CONFIG可能看起来像release
:something, 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文件中