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

标签 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 维护运行函数后对其所做的更改)。 我该怎么做?

最佳答案

您需要添加对导出的调用。来自 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($$1)
    INCLUDEPATH += /someDir/libs/lib$${lo}
    message("| INCLUDEPATH A: " $${INCLUDEPATH})

    export(INCLUDEPATH)                            # <-- This is new

    return (true)
}

关于function - 如何从 qmake 替换函数中更改变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44012654/

相关文章:

c++ - 新手 : C++ Private Variables

sql-server - 过程或函数指定的参数过多 SSRS

c++ - 如何在 Qt QMessageBox 中添加变量值?

c++ - 最大化小部件时如何在没有其他 QPushButton 的情况下扩展特定 QPushButton 的大小

c++ - 函数只能在 main 中调用一次

r - 为什么我们不能遍历 `...`?

php - 如何更改 XAMPP 中 PHP 的默认路径?

java - 无法让 ZooKeeper 集群工作,选举永远不会发生

c++ - 设置 'deep' 配置选项的最佳方法是什么?

来自带有 *-devel 包但在 Centos 6.5 上没有调试符号的存储库的 Qt5