我正在尝试创建一个自定义 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
在我运行我的函数后保持对它所做的更改)。 我该怎么做?
答案 0 :(得分:2)
您需要添加对export
的通话。来自qmake manual:
出口(VARIABLENAME)
从函数的本地上下文中导出variablename的当前值>到全球背景
所以你的代码应该是
defineReplace(myFunc) {
lo=$$lower($$1)
INCLUDEPATH += /someDir/libs/lib$${lo}
message("| INCLUDEPATH A: " $${INCLUDEPATH})
export(INCLUDEPATH) # <-- This is new
return (true)
}