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

У меня есть проект 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
        ...

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

Ответы [ 2 ]

20 голосов
/ 11 апреля 2014

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

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

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

0 голосов
/ 30 мая 2018

https://wiki.qt.io/Undocumented_QMake#Config_features

object_with_source - выводит каждый объектный файл в тот же каталог, что и его исходный файл (в последних версиях он заменен object_parallel_to_source).
object_parallel_to_source - воссоздает дерево исходных папок для объектафайлы (заменяет object_with_source).

в * .pro записи

CONFIG += object_parallel_to_source
...