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

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

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

отдельный.

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

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


person vog    schedule 09.08.2010    source источник


Ответы (2)


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

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

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

person Bowdzone    schedule 11.04.2014
comment
Меня устраивает. Однако обратите внимание, что следующее, похоже, не работает как способ использования корня каталога сборки: DESTDIR = # не работает DESTDIR =. # не работает - person Anthony Hayward; 30.05.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
person nic    schedule 30.05.2018
comment
Ничего не меняется! - person Hareen Laks; 18.09.2020