Побудова в джерелі та збірка без джерела


10

У моїй розробці (насамперед C ++) я давно дотримувався використання збірок із вихідних джерел. Тобто, мій джерело , як правило , знаходиться в /project/srcдиректорії і будує жити в /project/build/bin/release, /project/build/bin/debugкаталоги. Я зробив це, тому що він зберігає мої вихідні каталоги чистими від проміжних файлів, у мене є одне розташування для всіх моїх бінарних файлів, упаковка легша, чистка легша, а управління версіями - простіше. (Я щось пропустив?)

Зараз я успадковую (великий) проект, який використовує вбудовані джерела. Яка мотивація цього типу структури та які її переваги? (Мене найбільше турбують причини інженерного рівня та особисті переваги.)

Я сподівався, що «Великий масштабний C ++ Software Design» Лакоса зважився б на ньому, але я пропустив його, якби це було.


2
Вибачення. Я шукаю "Вбудовані джерела покращують" x "" або "вони допомагають забезпечити" y "" або "автоматизовані тести можуть потім" z "". Не розпуста. Я спеціально не хочу тут вступати у війну думок!
DiB

10
Побудова в джерелах - це прокляття, яким ви зобов'язані лінові свого попередника. Вони жахливі про все (контроль над джерелами, перехресне будівництво, пошук тексту тощо), але їх надзвичайно просто створити, використовуючи голові файли. Вибачте, це була розпуста. Але об'єктивний .

1
Що саме ви маєте на увазі під "in-source" збірками? Щось на кшталт /project/src/bin/release, чи справді всі проміжні та вихідні файли /project/src? Останнє може бути справді безладним, якщо є більше десятка вихідних файлів, перший - це нормально.
Док Браун

2
@Tibo, це не лише неймовірно просто з makefiles, але, здається, за замовчуванням і для більшості IDE (принаймні, коли я перевіряв останні кілька років тому).
Барт ван Інген Шенау

4
@BartvanIngenSchenau Дійсно? який IDE ви використовували, де це відбувається? Qt не робить цього, насправді здається, що це ставить якомога далі від джерела, Eclipse цього не робить. Ви можете стверджувати, що це робить Кліон, але лише як наслідок main.cpp спочатку перебуваючи на найвищому рівні вашого проекту, він все ще створює окремий каталог збірки cmake подалі від вашого джерела на цьому верхньому рівні. Я вважаю, що MSVS схожий на Clion і в цьому плані.
WHN

Відповіді:


9

Попросивши спільноту тут і продовживши пошук в Інтернеті, мені не вдалося знайти значного інженерного обгрунтування використання збірок у джерелах. (Є багато прикладів причин, щоб їх уникати.)

Єдиною об'єктивною причиною, яку я знайшов (про що згадувалося в коментарі @BartvanIngenSchenau), є те, що вбудовані джерела інколи не застосовуються системою збірки. Через це значення за замовчуванням вони не потребують накладних витрат у часі налаштування, що може бути цілком прийнятним для дуже невеликого (або нульового) проекту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.