views:

1016

answers:

3

How can I cross-compile my application on Qt. As for each project

I need two version

1). Which runs on computer on Qvfb & i386 Architecture

2). Which runs on device with Linux Framebuffer & ARM Architecture

I have already compiled Qt for device as well as for Qvfb. I am able to run examples on both platforms, But How can I cross-compile my applications. I would prefer that both output stays in different directories, that means output of i386 stays in output-i386 platform and output of ARM stays in output-ARM directory.

I am using Qt 4.6 for Embedded Linux.

+2  A: 

Qt takes all platform specific details from mkspec file.

Specify mkspec file to qmake to cross compile by using -spec command line argument of qmake.

in mkspec file there are many defines by which you can customize compiling for different platforms like I can use DESTDIR to send final output file to particular directory, OBJECTS_DIR to send Objects file to particular directory. MOC_DIR to send moc generated files to particular dir, UI_DIR to uic generated headers and cpp files to particluar directory.

Sunny
+2  A: 

The end of this article shows you how to change qmake in a working directory (you need to run make destclean first). This other article outlines the basic Qt for embedded Linux environment, just to give you the big picture.

e8johan
+4  A: 

You can simply set DESTDIR in your .pro file. See the qmake variable reference. You might also want to adjust the variables OBJECTS_DIR, UI_DIR, MOC_DIR and RCC_DIR.

bluebrother
Definitely adjust the other directories also. Otherwise, you might try linking objects built for one platform into an executable built for the other.
Caleb Huitt - cjhuitt