gpt4 book ai didi

linux - 如何从命令行传递 QMAKE 变量?

转载 作者:太空宇宙 更新时间:2023-11-04 12:21:15 24 4
gpt4 key购买 nike

我要尝试从 Linux 终端交叉编译 Qt。当我运行 qmake 时,它​​以必须定义 CROSS_COMPILE 变量的方式在我的上下文中应用 mkspecs qmake.conf。例如,有一个关键的 conf 行如下所示:

QMAKE_CXX               = $${CROSS_COMPILE}g++

Qmake 返回一个错误,清楚地表明 $${CROSS_COMPILE} 没有被解析。它只是使用“g++”而不是应该存在的整个值。

我试过像这样调用 qmake 并从 bash 脚本定义变量:

qmake qt.pro "CROSS_COMPILE=${CROSS_COMPILE}"

像这样:

qmake qt.pro -- "CROSS_COMPILE=${CROSS_COMPILE}"

还有其他一些类似的尝试。我也尝试过对该命令中的值进行硬编码,以防与它有任何关系。我也尝试将其定义为环境变量(以防万一)...

没有任何作用。然而,我已经看到了很多例子,其中这种语法似乎是有效的。做错了什么?是否存在字符转义并发症?

最佳答案

您的问题是 shell 已经将字符串中的 ${} 解释为一种变量替换形式。由于您没有在 shell 中定义变量 CROSS_COMPILE,它没有任何值(value),而 qmake 得到的实际上是引号“qt.pro”和“CROSS_COMPILE =”之间的两个参数,这意味着您实际上已经让 qmake 将 CROSS_COMPILE 设置为空值(value)。你应该尝试的是:

qmake qt.pro "CROSS_COMPILE=\${CROSS_COMPILE}"

注意美元符号前的反斜杠,它对其进行转义以防止它对 shell 具有特殊含义并使其能够按字面意义传递给 qmake。

这个问题也已经在 Stackoverflow 上被问到:

Define a string in qmake command line

更多关于 Bash 的变量替换:

https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html

编辑:

例子:我刚刚尝试了一个包含以下内容的新项目文件:

SOME_OTHER_VAR=$${SOME_VAR}_something
消息($${SOME_OTHER_VAR})

和做

SOME_VAR=value
qmake qmake_variables.pro "SOME_VAR=${SOME_VAR}"

对我有用,打印:

Project MESSAGE: value_something

关于linux - 如何从命令行传递 QMAKE 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45884125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com