> For the complete documentation index, see [llms.txt](https://pllug-community.gitbook.io/pllug-c-qt-roadmap-book/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://pllug-community.gitbook.io/pllug-c-qt-roadmap-book/seredovishe-rozrobki-qtcreator/robota-z-proektami-u-qtcreator/kompilyaciya-proektu-qt.md).

# Компіляція проекту Qt

Компіляція проекту проходить у два етапи. Спочатку виконується попередня обробка проекту з допомогою програми `qmake`. Цей інструмент Qt несе відповідальність за весь процес компіляції проекту. Він читає вміст проектного файлу та генерує необхідні проміжні файли: додаткові файли з вихідним кодом та make-файли для компіляції. Це необхідно для того, щоб перетворити усі особливі розширення Qt, які були використані у програмі, на код мовою С++ та використати додаткові налаштування для проекту, описані у .pro-файлі. Після цього проект готовий до обробки компілятором. Другим етапом є, безпосередньо, процес компіляції. Усі ці дії виконуються автоматично у середовищі Qt Creator.

Таким чином, процесом побудови проекту керує .pro-файл. При наявності вихідних текстів програми, та за відсутності.pro-файлу, його можна згенерувати. Для цього з командного рядка необхідно перейти до теки, яка містить вихідні тексти програми та викликати `qmake` з параметром `--project`. Цим прийомом зручно користуватися, щоб згенерувати файл проекту та використати оболонку QtCreator у роботі над програмою (навіть для звичайних програм на C++ без Qt).

Розділ ***Projects*** середовища (комбінація клавіш ***Ctrl+5*** для переходу у режим редагування налаштувань проекту) містить набір необхідних налаштувань для процесу компіляції та для налаштування середовища запуску проекту. Одним з таких налаштувань є опція ***Shadow Build***, яка дозволяє ввімкнути режим при якому для проміжних файлів, Make- файлів та продуктів компіляції створюється окрема тека поза межами теки з вихідним кодом проекту (налаштування розміщення для неї - у полі ***Build directory***). Це дає змогу збудувати та зберігати одночасно кілька варіантів збудованого проекту для різних інструментаріїв. Також це зберігає теку з вихідним кодом від засмічення файлами, які були утворені в процесі побудови проекту. При вимкненому Shadow build проміжні файли та тека з побудованою програмою будуть збережені у теці, яка містить файл проекту.
