有没有办法将 Qt 的源代码构建复制到另一个位置?
Posted
技术标签:
【中文标题】有没有办法将 Qt 的源代码构建复制到另一个位置?【英文标题】:Is there a way to copy a source code build of Qt to another location? 【发布时间】:2010-06-24 13:01:17 【问题描述】:我们正在使用 Qt 的商业许可证构建一个 Windows 和 Mac 应用程序,我们是从一个 git clone 构建的。
我们有一个使用 Hudson 的构建设置,可能有几个构建代理,我想为 Windows 做的至少是构建一次,然后将构建 Qt 部署到每个代理(而不是必须在每个代理上构建 Qt代理人)。然而,构建的 Qt 似乎不喜欢被移动或复制。
有没有办法解决这个问题?我们的一个想法是,是否有一些设置可以构建 Qt,使其类似于它们的二进制分发,但我看不到这样做的方法。
【问题讨论】:
最初的错误好像是:QMAKESPEC has not been set,所以无法推断配置。然后我得到了一些其他错误,但我怀疑它们都源于这个。 构建路径实际上嵌入到 QtCore 库中。如果您尝试移动构建,将会出现许多错误,其中一些非常微妙。例如,为 QLibraryInfo::LibraryLocation 返回的值将是错误的。 见How to install Qt on Windows after building? 【参考方案1】:发布的 Qt 二进制文件的工作方式是这样的:
Qt 被构建在一个很长的构建路径中(例如在 Windows 上,c:\Qt\______________padding__________for_________packaging________________).
然后它被打包到一个安装程序中。安装程序包含一个自定义插件,它在安装时扫描二进制文件并修补 Qt 二进制文件,替换很长的构建路径和用户的安装路径。注意,二进制文件的大小不能改变,所以用户的安装路径必须总是比构建路径短...
在 Mac 和 Linux 上也有类似的 rpath 修改。 rpath 使用$ORIGIN
使其成为相对路径,或者像上面的路径一样对其进行二进制修补。
制作二进制包的脚本非常单一,这个逻辑不容易提取...
对于您的用例,我建议您始终以可预测的路径构建 Qt。始终在 c:\Qt_test
构建 Qt 并在每个代理上部署到 c:\Qt_test
。缺点是 Hudson 可能不太擅长自动清理它,所以你必须自己编写脚本。
【讨论】:
以上是关于有没有办法将 Qt 的源代码构建复制到另一个位置?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在不构建的情况下将 docker-compose 容器无缝传输到另一台主机? [复制]