How to put generated files (e.g. object files) into a separate folder when using Qt/qmake?

vog picture vog · Aug 9, 2010 · Viewed 15.4k times · Source

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)

separate.

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/.)

Answer

Bowdzone picture Bowdzone · Apr 11, 2014

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: