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

时间:2017-05-16 22:32:32

标签: function configuration qt5 qmake

我正在尝试创建一个自定义 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在我运行我的函数后保持对它所做的更改)。 我该怎么做?

1 个答案:

答案 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)
}