如何从 qmake 替换函数中更改变量

How to change variable from within qmake replace function

我正在尝试创建一个自定义 qmake "replace function",它基本上将一些内容附加到 INCLUDEPATH 变量,如下所示:

defineReplace(myFunc) {
    lo=$$lower($)
    INCLUDEPATH += /someDir/libs/lib$${lo}
    message("| INCLUDEPATH A: " $${INCLUDEPATH})
    return (true)
}

然而,当我 运行 这个带有参数的函数然后打印出 INCLUDEPATH 变量时,像这样:

$$myFunc(whatever)
message("| INCLUDEPATH B: " $${INCLUDEPATH})

我在日志中得到以下信息:

Project MESSAGE: | INCLUDEPATH A: /someDir/libs/libwhatever
Project MESSAGE: | INCLUDEPATH B: 

这表明该函数有效,但不知何故对 INCLUDEPATH 变量所做的更改未保留。

我想知道如何获得预期的行为(INCLUDEPATH 维护在 运行 我的函数之后对其所做的更改)。 我该怎么做?

您需要添加对 export 的呼叫。来自 qmake manual:

export(variablename)

Exports the current value of variablename from the local context of a function > to the global context

所以你的代码应该是

defineReplace(myFunc) {
    lo=$$lower($)
    INCLUDEPATH += /someDir/libs/lib$${lo}
    message("| INCLUDEPATH A: " $${INCLUDEPATH})

    export(INCLUDEPATH)                            # <-- This is new

    return (true)
}