如何从 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)
}
我正在尝试创建一个自定义 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)
}