Qt - Аккуратное хранение проекта

Материал из Кафедра ИУ5 МГТУ им. Н.Э.Баумана, студенческое сообщество
Перейти к навигации Перейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

Введение

При сборке проекта, особенно если это GUI-приложение, создаётся масса файлов:

  • файлы moc-компилятора;
  • заголовочные файлы форм дизайнера;
  • объектные файлы
  • и прочие.

И если вы в какой-то момент захотите получить "чистые" исходники вашего проекта, без нагенерированного добра, вы столкнётесь с проблемой, как же отличить свои исходники от файлов компилятора, чтобы спокойно удалить последние и не тратить на них место при переносе, например.

Проект в Qt может быть настроен на теневую сборку - тогда все генерируемые файлы хранятся отдельно, на уровень выше ваших исходников проекта. При этом создаются два каталога: под debug сборку и под release сборку. Однако, если вид каталогов, расползающихся по вашему жёсткому диску и приумножающих хаос на нём, преисполняет ваше сердце горечью, то эта статья для вас.

Как выглядит окно настройки сборки проекта на обычную (не теневую) сборку:

При такой настройке дополнительных каталогов вне директории вашего проекта создаваться не будет. Однако, в этом случае все генерируемые файлы посыплются прямо в директорию проекта и перемешаются с вашими исходниками. Но этот хаос управляемый. Этим файлам можно выделить свой каталог и хранить их там, о чём будет рассказано далее.

В то же время, есть ещё набор файлов. Они также складываются в каталог к вашему проекту и портят весь фэн-шуй. Это:

  • Makefile;
  • Makefile.Debug;
  • Makefile.Release;
  • object_script.ВАШ_ПРОЕКТ.Debug;
  • object_script.ВАШ_ПРОЕКТ.Release;
  • ВАШ_ПРОЕКТ.pro.user.

Хаос из этих файлов неуправляемый. Они так и будут тут лежать и отравлять вам настроение. Ну да ладно, их можно будет удалить и вручную.

Редактирование файла проекта

Чтобы разделить ваши исходники и генерируемые, необходимо добавить следующие строки в .pro-файл вашего проекта:

INCLUDEPATH += . \

MOC_DIR     += generated/mocs # для файлов moc-компилятора
UI_DIR      += generated/uis  # для заголовочных файлов форм дизайнера
RCC_DIR     += generated/rccs # для файлов ресурсов
OBJECTS_DIR += generated/objs # для объектных файлов

Теперь при сборке всё будет аккуратно раскладываться по соответствующим каталогам в директории generated.