Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to copy a source code build of Qt to another location?

We're building a Windows and Mac app using a commercial licence of Qt, which we're building from a git clone.

We've got a build setup using Hudson with potentially several build agents, and what I'd like to do for Windows at least is build once then deploy the build Qt to each agent (rather than have to build Qt on each agent). It seems, however, that the built Qt doesn't like to be moved or copied.

Is there a way around this? One thought we had was whether there was some setting that would build Qt so it resembled their binary distribution, but I can't see a way to do this.

like image 804
Stephen Penny Avatar asked Jun 24 '10 13:06

Stephen Penny


1 Answers

The way that the released Qt binaries work is this:

Qt is built into a very long build path (e.g. on windows, c:\Qt\______________padding__________for_________packaging________________). Then it's packed up into an installer. The installer contains a custom plugin which scans through the binaries at install time and patches the Qt binaries, replacing the long build path with the user's install path. Note, the size of the binary can't be changed, so the user's install path must always be shorter than the build path...

On Mac and Linux there is also similar munging of rpaths. Either the rpath uses $ORIGIN to make it relative, or it's binary patched like the above path.

The scripts which make the binary packages are quite monolithic and this logic isn't easily extracted...

For your use case, I would recommend that you simply build Qt in a predictable path all the time. Always build Qt at c:\Qt_test and deploy to c:\Qt_test on each agent. The downside is that Hudson might not be so good at automatically cleaning this up, so you'd have to script that yourself.

like image 188
rohanpm Avatar answered Oct 07 '22 02:10

rohanpm