如何从 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在运行函数后维护对它所做的更改(。我该怎么做?

您需要

添加对export 的调用。从qmake手册:

导出(变量名(

将变量名的当前值从函数>的本地上下文导出到全局上下文

所以你的代码应该是

defineReplace(myFunc) {
    lo=$$lower($$1)
    INCLUDEPATH += /someDir/libs/lib$${lo}
    message("| INCLUDEPATH A: " $${INCLUDEPATH})
    export(INCLUDEPATH)                            # <-- This is new
    return (true)
}

相关内容

  • 没有找到相关文章

最新更新