PDA

View Full Version : Running QMake and Make on different systems



mmangold
15th September 2015, 20:15
Hello All,

Because of some interesting configuration and allowances at my current company I've run into a situation where I need to build my Qt project on a machine that I can't install Qt on. I can copy Qt libs and headers to this system. So basically the easiest thing I thought of was to MOC everything that needed it without compiling with GCC. Leave everything in an in-between state. Then take it all to the target system and finish the make process to include compiling all the source.

However, I can't seem to figure out how to do this. QMake makes a Makefile that bakes QMake calls into it, which is going to fail on my target system.

Is it possible to do all Qt make actions and STOP before invoking the GCC compiler, move everything, and then simply continue the process on another system?

Thank you!

ChrisW67
15th September 2015, 21:30
No, the easiest thing is the normal situation, where you build the program on one machine and deploy the result to another machine. You already have a machine with a working Qt environment that is binary compatible with the target (or you could not copy libraries across). Build there and deploy.

mmangold
15th September 2015, 21:43
Hey Chris, thank you for the reply.

The normal situation is what I've done and desperately want to continue to do. The problem is in a number of core OS libraries that because of some oversight are old on the target machine and newer on our development machines. Code compiled against these non-Qt libraries blows up when dynamically linking against the older libraries on the target machine. That's why I'm trying to compile on the target machine - so that I link against those libraries. The target is binary compatible...I just can't install Qt on it because of process limitations, not technical limitations.

mmangold
18th September 2015, 22:46
So I was able to resolve this. I took the makefile generated by qmake and pulled out all the gcc instructions and related declarations, putting them into their own makefile, including a make clean section. I then ran the full build, then ran the clean target of the gcc only makefile, leaving all moc files in place. I then transferred everything to my target system and ran the gcc only makefile. Worked like a charm.

ChrisW67
19th September 2015, 09:39
Did you explore deploying private versions of the system libraries along with your application?