有没有一种方法可以将Qt源代码构建复制到另一个位置?

6
我们正在使用Qt的商业许可证构建Windows和Mac应用程序,这些应用程序是从git克隆中构建的。
我们已经使用Hudson设置了构建,并可能有几个构建代理。至少对于Windows,我想做的是仅构建一次,然后将构建的Qt部署到每个代理上(而不是在每个代理上构建Qt)。但是,似乎构建的Qt不喜欢被移动或复制。
是否有解决方法?我们考虑过一个想法,即是否有一些设置可以构建Qt,使其类似于它们的二进制发行版,但我找不到这样的方法。

最初的错误似乎是:QMAKESPEC未设置,因此无法推断配置。然后我会得到许多其他错误,但我怀疑它们都源于这一个错误。 - Stephen Penny
构建路径实际上被嵌入到QtCore库中。如果您尝试移动构建,将会出现许多错误,其中一些非常微妙。例如,QLibraryInfo :: LibraryLocation返回的值将是错误的。 - rohanpm
1个回答

5
发布的Qt二进制文件的工作方式如下:
Qt被编译到一个非常长的构建路径中(例如在Windows上,是c:\Qt\______________padding__________for_________packaging________________)。然后它被打包成安装程序。安装程序包含一个自定义插件,在安装时扫描二进制文件并修补Qt二进制文件,将长构建路径替换为用户的安装路径。请注意,二进制文件的大小不能改变,因此用户的安装路径必须始终比构建路径短...
在Mac和Linux上也有类似的rpath混淆。rpath要么使用$ORIGIN使其相对路径,要么像上面的路径一样进行二进制文件修补。
制作二进制包的脚本相当庞大,这种逻辑不容易提取...
对于您的用例,我建议您始终在可预测的路径下构建Qt。每次都在c:\Qt_test上构建Qt,并在每个代理上部署到c:\Qt_test。缺点是Hudson可能不擅长自动清理,因此您需要自己编写脚本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接