How to put generated files (e.g. object files) into a separate folder when using Qt/qmake?
I have a Qt project that uses qmake. To improve clarity and readability, I'd like to keep the
- source files
- build system
- generated files (such as object files)
So my first step was putting the source files into a src/ sub directory:
myproject/ myproject.pro src/ main.cpp MainWindow.ui ...
That way I separated the source files from the build system (*.pro). However, when I then run qmake followed by make, the generated files (object files, etc) are placed into the main project folder:
myproject/ myproject.pro Makefile main.o ui_MainWindow.h ... src/ main.cpp MainWindow.ui ...
Well, at least they weren't put into the src/ folder, but how do I specify that they are put into another sub folder such as build/?
myproject/ myproject.pro Makefile build/ main.o ui_MainWindow.h ... src/ main.cpp MainWindow.ui ...
(BTW, I don't care where the target binary myproject is put, but I guess it should be placed directly into project folder rather than into build/.)
You can add the following lines to your *.pro file:
DESTDIR=bin #Target file directory OBJECTS_DIR=generated_files #Intermediate object files directory MOC_DIR=generated_files #Intermediate moc files directory
A list of variables is available at the following locations:
object_with_source — outputs each object file into the same directory as its source file (replaced by object_parallel_to_source in the latest versions). object_parallel_to_source — recreate source folder tree for object files (replaces object_with_source).
in *.pro write
CONFIG += object_parallel_to_source