Как поместить сгенерированные файлы (например, файлы объектов) в отдельную папку при использовании Qt/qmake?

У меня есть проект Qt, который использует qmake. Чтобы улучшить ясность и удобочитаемость, я хотел бы сохранить

  • исходные файлы
  • система сборки
  • сгенерированные файлы (например, файлы объектов)

отдельно.

Итак, первым шагом я поставил исходные файлы в каталог src/sub:

myproject/
    myproject.pro
    src/
        main.cpp
        MainWindow.ui
        ...

Таким образом я выделил исходные файлы из системы сборки (*.pro). Однако, когда я запускаю qmake, за которым следует make, сгенерированные файлы (объектные файлы и т.д.) Помещаются в основную папку проекта:

myproject/
    myproject.pro
    Makefile
    main.o
    ui_MainWindow.h
    ...
    src/
        main.cpp
        MainWindow.ui
        ...

Ну, по крайней мере, они не были помещены в папку src/, но как я могу указать, что они помещаются в другую подпапку, такую ​​как build/?

myproject/
    myproject.pro
    Makefile
    build/
        main.o
        ui_MainWindow.h
        ...
    src/
        main.cpp
        MainWindow.ui
        ...

(BTW, мне все равно, куда помещается целевой двоичный myproject, но я предполагаю, что он должен быть помещен непосредственно в папку проекта, а не в build/.)

Ответы

Ответ 1

Вы можете добавить следующие строки в файл *.pro:

DESTDIR=bin #Target file directory
OBJECTS_DIR=generated_files #Intermediate object files directory
MOC_DIR=generated_files #Intermediate moc files directory

Список переменных доступен в следующих местах: