Одной из причин использования системы сборки, которую я удивлен, никто больше не упомянул, является гибкость. В прошлом я также использовал встроенную систему сборки моей IDE для компиляции своего кода. Однако я столкнулся с большой проблемой, когда IDE, которую я использовал, был прекращен. Моя способность компилировать мой код была связана с моей IDE, поэтому я был вынужден пересмотреть всю мою систему сборки. Однако во второй раз я не совершил ту же ошибку. Я реализовал свою систему сборки через make-файлы, чтобы я мог по желанию переключать компиляторы и IDE без необходимости повторной реализации системы сборки.
Я столкнулся с подобной проблемой на работе. У нас была собственная утилита, которая была построена как проект Visual Studio. Это довольно простая утилита, которая годами не нуждалась в обновлении, но недавно мы обнаружили редкую ошибку, которую нужно было исправить. К нашему ужасу, мы обнаружили, что утилита была построена с использованием версии Visual Studio, которая была на 5-6 версий старше, чем у нас есть в настоящее время. Новый VS не будет правильно читать файл проекта старой версии, и нам пришлось заново создавать проект с нуля. Даже при том, что мы все еще использовали ту же самую IDE, различия в версиях сломали нашу систему сборки.
Когда вы используете отдельную систему сборки, вы полностью контролируете ее. Изменение IDE или версий IDE ничего не сломает. Если ваша система сборки основана на инструменте с открытым исходным кодом, таком как make
, вам также не нужно беспокоиться о том, что ваши инструменты сборки будут прекращены или отменены, потому что вы всегда можете пересобрать их из исходного кода (плюс исправлять ошибки), если это необходимо , Опора на систему сборки вашего IDE создает единую точку отказа (особенно на платформах, таких как Visual Studio, которые также включают в себя компилятор ), и, на мой взгляд, для меня было достаточно причины отделить мою систему сборки и IDE.
На более философском уровне я твердо верю, что нехорошо автоматизировать то, что вы не понимаете. Хорошо использовать автоматизацию, чтобы сделать себя более продуктивным, но только если у вас есть четкое понимание того, что происходит под капотом (чтобы вы не застряли, когда автоматизация сломалась, если не по какой-либо другой причине). Когда я впервые начал программировать, я использовал встроенную систему сборки своего IDE, потому что она была простой и автоматической. Позже я начал осознавать, что не совсем понимаю, что происходит, когда нажимаю кнопку «Компиляция». Я немного почитал и начал собирать простой сценарий сборки с нуля, сравнивая мой вывод с выводом системы сборки IDE. Через некоторое время я понял, что теперь у меня есть возможность делать все, что трудно или невозможно, через IDE. Настроив параметры командной строки компилятора сверх того, что предоставляла среда IDE, я смог получить меньший, немного более быстрый вывод. Что еще более важно, я стал лучшим программистом, обладая реальными знаниями всего процесса разработки от написания кода до генерации машинного языка. Понимание и контроль всего сквозного процесса позволяет мне оптимизировать и настроить его в соответствии с потребностями любого проекта, над которым я сейчас работаю.