Как часто программиста попросят записать файл make-файла? [закрытый]

7
задан dmckee 17 August 2010 в 21:33
поделиться

9 ответов

Никто никогда не пишет Makefile. Они берут существующий Makefile и модифицируют его.

Просто будьте благодарны, что вам не нужно иметь дело с IMakefile. (Для тех из вас, кому посчастливилось никогда с этим не сталкиваться или кому удалось забыть, IMakefile был файлом, который был своего рода мета-Makefile для проектов на основе X Window System, который будет использоваться для создания Makefile, который знал где вы установили все свои библиотеки и двоичные файлы X Windows. Разумеется, это отстой.)

24
ответ дан 6 December 2019 в 04:49
поделиться

Даже если вы используете среду IDE, которая занимается деталями построения проекта за вас, mak Электронные файлы по-прежнему могут быть очень полезными. Иногда вам нужно иметь некоторые дополнительные функции как часть процесса сборки, например, чтобы запустить этап предварительной обработки для создания файла c ++ программно (если вы используете Qt, вам может потребоваться запустить moc на вашем компьютере). заголовочные файлы или rcc в файлах ресурсов. Возможно, вам потребуется обработать файл.idl для создания файла реализации) или в качестве шага после сборки для копирования файлов в место назначения. В этих случаях у вас обычно есть два варианта:

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

Разработчик C ++ может долгие годы обходиться без создания Makefile, если он не работает с Linux / Unix, но порядочный разработчик постарается понять, как Makefiles работать, поскольку они, вероятно, улучшат часть вашего текущего рабочего процесса.

1
ответ дан 6 December 2019 в 04:49
поделиться

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

16
ответ дан 6 December 2019 в 04:49
поделиться

Следует отметить, что, если система сборки настроена по модульному принципу, одна практика состоит не в том, чтобы создавать один огромный make-файл для всего этого, а в make-файлах для битов. который может вызываться рекурсивно из главного make-файла. Это отличная функция, поскольку она означает, что разные продукты (библиотеки?) Могут быть построены как отдельные блоки, часто параллельно.

Make-файлы предназначены для автоматизации процесса сборки. Следовательно, они определенно не являются рутиной; они избавляют вас от записи gcc -c * .c и т. д. все время. Не только это, но и правильно написанный make-файл имеет фальшивки для очистки, восстановления и т. Д. В большинстве моих проектов make rebuild делает именно это - очищает все и запускается заново.

Make-файлы действительно полезны. Я не могу сказать достаточно.

1
ответ дан 6 December 2019 в 04:49
поделиться

Программисты должны знать, как создавать свои проекты. Обычно (по моему опыту) «производственная сборка» основана на исходном make-файле программиста. Многие программисты всю свою карьеру просто слепо возятся при сборке своих make-файлов, но это должен делать каждый программист.

2
ответ дан 6 December 2019 в 04:49
поделиться

Так часто, как его просят начать новый проект, который не похож на существующий проект, сценарии сборки которого можно адаптировать. Думаю, это не лучший ответ, но по моему опыту всегда были сценарии кода / ресурсов / сборки, которые я могу адаптировать.

С другой стороны, для любого программиста на C ++ важно знать, как построен его код. Makefile, скрипты Ant и т. Д. - это всего лишь механизм реализации. Так что я думаю, что это достаточно важно, чтобы научиться.

4
ответ дан 6 December 2019 в 04:49
поделиться

Я никогда не думал о make-файлах как о проблемах, они весьма полезны ...

Частота будет зависеть от платформы, которую вы используете, и от вашей роли.

Например, в некоторых организациях есть достаточно фиксированный файл сборки, который не часто меняется, в то время как в других изменения происходят часто. Некоторые организации полагаются на среду IDE при сборке и т. Д. Вам не обязательно быть инженером сборки.

Я думаю, что большинство разработчиков C / C ++ должны иметь хоть какое-то фундаментальное представление о том, как работают make-файлы, хотя им не обязательно быть гуру. В моей альма-матер это часть первого курса CS.

1
ответ дан 6 December 2019 в 04:49
поделиться

Это зависит от инструментов / библиотек / фреймворков, которые вы используете для своего проекта. Для своей работы я использую Qt, поэтому мне никогда не нужно писать Makefile, поскольку qmake делает это за меня, хотя мне нужно знать, как вместо этого создать файл проекта qmake .

Я открыто признаю, что, вероятно, не смог бы написать ничего, кроме простейшего Makefile, без необходимости изучать все это с нуля. Я не думаю, что это изменится в ближайшее время, потому что я бы выучил это, только если бы меня заставили. Зачем изучать то, что может никогда не понадобиться?

0
ответ дан 6 December 2019 в 04:49
поделиться

Я полагаю, это зависит от...

Лично меня синтаксис Makefiles просто завораживает. Выполнить любую, даже простую операцию над путями объекта очень сложно.

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

Мне пришлось переписать систему сборки нашего приложения спустя год после окончания школы. Я сделал это, используя scons, и это отлично сработало. Время сборки увеличилось с 1 ч 30 мин до едва ли 10 м, потому что я наконец-то смог обеспечить параллельную компиляцию и установить автоматическую локальную репликацию используемых библиотек.

Мораль такова: если вы просите кого-то подобрать механизм сборки, не навязывайте ему Makefile. Пусть он выберет более современный инструмент.

1
ответ дан 6 December 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: