我正在尝试创建一个自定义的qmake"替换函数",该函数基本上将一些内容附加到INCLUDEPATH
变量中,如下所示:
defineReplace(myFunc) {
lo=$$lower($$1)
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手册:
导出(变量名(
将变量名的当前值从函数>的本地上下文导出到全局上下文
所以你的代码应该是
defineReplace(myFunc) {
lo=$$lower($$1)
INCLUDEPATH += /someDir/libs/lib$${lo}
message("| INCLUDEPATH A: " $${INCLUDEPATH})
export(INCLUDEPATH) # <-- This is new
return (true)
}