qmake - 查询 Linux 中的内部设置 - 它们在哪里?

Posted

技术标签:

【中文标题】qmake - 查询 Linux 中的内部设置 - 它们在哪里?【英文标题】:qmake -query internal settings in Linux - where are they? 【发布时间】:2011-10-13 01:25:38 【问题描述】:

我正在使用 ptxdist 构建一个带有交叉编译器的 Linux 系统。它允许我配置 Qt4 进行安装,它构建和安装 qt-everywhere-opensource-src-4.6.3 好的。但是,qmake 内部设置搞砸了,我不知道如何修复它们。

当我运行 qmake -query 时,我得到:

me@ubuntu:~$ qmake -query
QT_INSTALL_PREFIX:/
QT_INSTALL_DATA:/
QT_INSTALL_DOCS://doc
QT_INSTALL_HEADERS://include
QT_INSTALL_LIBS://lib
QT_INSTALL_BINS://bin
QT_INSTALL_PLUGINS://plugins
QT_INSTALL_TRANSLATIONS://translations
QT_INSTALL_CONFIGURATION:/etc/xdg
QT_INSTALL_EXAMPLES://examples
QT_INSTALL_DEMOS://demos
QMAKE_MKSPECS://mkspecs
QMAKE_VERSION:2.01a
QT_VERSION:4.6.3

通过一些研究,看起来可以通过简单地重建 Qt 来解决这个问题,但它并不能解决这个问题。我深入研究了构建输出,看起来 Qt 构建的 ./configure 命令具有“-prefix /usr”,所以我不知道为什么没有修复。

如果可能,我想手动修复这些内部值,因为 Qt 构建需要几个小时。有谁知道怎么做?

【问题讨论】:

【参考方案1】:

在配置时,这些路径被硬编码在 'src/corelib/global/qconfig.cpp' 中,并在构建时最终硬编码到 qmake 中。它们还被硬编码到许多其他文件中,例如所有 .la 和 .pc 文件,更不用说 Makefile 安装规则了。

解决这个问题的唯一方法是弄清楚为什么 configure 总是搞砸前缀。 configure 是一个很大的 shell 脚本,所以很容易看到 $QT_INSTALL_PREFIX 从 '-prefix' 参数分配的位置,然后对其进行的不同检查(比如通过 'config.tests/unix/makeabs' 运行它) .尝试在 $QT_INSTALL_PREFIX 更改之前/之后放置打印语句,您应该能够找出路径被搞砸的地方。

此外,您不必等待完整构建完成来判断是否设置了前缀 正确。配置运行后,查看 'src/corelib/global/qconfig.cpp' 并查看 'qt_configure_prefix_path_str' 设置为什么。

【讨论】:

谢谢 - 我搜索了几个小时试图找到这个确切的信息。我认为他们没有在操作系统级别配置这些值是愚蠢的——在配置期间将它们构建到源代码中?那是1990年。我想他们一定有他们的理由。 哦,我还是要弄清楚如何让ptxdist重建和安装Qt的主机版本。似乎问题在于,当我运行 ptxdist 配置和构建时,它只是重建 Qt 的目标构建。【参考方案2】:

您可以使用手动设置这些属性

 qmake -set VARIABLE VALUE

它们使用QSettings(Qt 内置的持久性应用程序设置)存储。

见Configuring qmake's Environment

【讨论】:

一些选项是“内置属性”——这些是只读的,不能更改。例如qmake -set QT_INSTALL_HEADERS /my/custom/path 然后qmake -query QT_INSTALL_HEADERS 仍然返回默认路径,并且在编译时,qmake 使用默认路径。 qmake -query | grep QT_INSTALL_HEADERS 显示两条路径。在 linux 上,用户配置在 $HOME/.config/QtProject/QMake.conf【参考方案3】:

配置脚本可能对斜线很模糊。你确定构建前缀是 /usr 而不是 /usr/ 。

【讨论】:

以上是关于qmake - 查询 Linux 中的内部设置 - 它们在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

Qmake 创建 Visual Studio 项目 - 设置“工作目录”

qmake 中的 host_build 是啥?

合并中的内部查询以设置空值

QT qmake 小写我的自定义小部件名称

qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory(示

qmake 设置安装目录