Qt - Аккуратное хранение проекта: различия между версиями

Материал из Кафедра ИУ5 МГТУ им. Н.Э.Баумана, студенческое сообщество
Перейти к навигации Перейти к поиску
(Новая страница: «right|70px При сборке проекта, особенно если это GUI-приложение, создаётся масса ...»)
 
(теневые сборки)
Строка 1: Строка 1:
[[Файл:Qt-logo.png|right|70px]]
[[Файл:Qt-logo.png|right|110px]]
При сборке проекта, особенно если это GUI-приложение, создаётся масса файлов: moc-компилятора, заголовочные файлы форм дизайнера, объектные файлы и прочие.
__TOC__
== Введение ==


Всё это захламляет директорию проекта.
При сборке проекта, особенно если это GUI-приложение, создаётся масса файлов:
* файлы <code>moc</code>-компилятора;
* заголовочные файлы форм дизайнера;
* объектные файлы
* и прочие.
 
И если в какой-то момент заходите получить "чистые" исходники вашего проекта, без нагенерированного добра, вы столкнётесь с проблемой, как же отличить свои исходники от файлов компилятора, чтобы спокойно удалить последние и не тратить на них место при переносе, например.
 
Проект в <code>Qt</code> может быть настроен на ''теневую сборку'' - тогда все генерируемые файлы хранятся отдельно, на уровень выше ваших исходников проекта. При этом создаются два каталога: под <code>debug</code> сборку и под <code>release</code> сборку. Однако, если вид каталогов, расползающихся по вашему жёсткому диску и приумножающих хаос на нём, преисполняет ваше сердце горечью, то эта статья для вас.
 
Как выглядит окно настройки сборки проекта на обычную (не теневую) сборку:
 
[[Файл:Prodlenka.qt.store carefull.pic1.png|center]]
 
При такой настройке дополнительных каталогов вне директории вашего проекта создаваться не будет. Однако, в этом случае все генерируемые файлы посыплются прямо в директорию проекта и перемешаются с вашими исходниками. Но этот хаос управляемый. Этим файлам можно выделить свой каталог и хранить их там, о чём будет рассказано далее.
 
В то же время, есть ещё набор файлов. Они так же складываются в каталог к вашему проекту и портят весь фен-шуй. Это:
* <code>Makefile</code>;
* <code>Makefile.Debug</code>;
* <code>Makefile.Release</code>;
* <code>object_script.ВАШ_ПРОЕКТ.Debug</code>;
* <code>object_script.ВАШ_ПРОЕКТ.Release</code>;
* <code>ВАШ_ПРОЕКТ.pro.user</code>.
 
Хаос из этих файлов неуправляемый. Они так и будут тут лежать и отравлять вам настроение. Ну да ладно, их можно будет удалить и вручную.


== Редактирование файла проекта ==
== Редактирование файла проекта ==
Строка 8: Строка 33:
Чтобы разделить ваши исходники и генерируемые, необходимо добавить следующие строки в <code>.pro</code>-файл вашего проекта:
Чтобы разделить ваши исходники и генерируемые, необходимо добавить следующие строки в <code>.pro</code>-файл вашего проекта:
<syntaxhighlight lang="cpp-qt">
<syntaxhighlight lang="cpp-qt">
INCLUDEPATH += . \
MOC_DIR    += generated/mocs # для файлов moc-компилятора
MOC_DIR    += generated/mocs # для файлов moc-компилятора
UI_DIR      += generated/uis  # для заголовочных файлов форм дизайнера
UI_DIR      += generated/uis  # для заголовочных файлов форм дизайнера

Версия от 15:39, 6 декабря 2012

Введение

При сборке проекта, особенно если это 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.