Подтвердить что ты не робот

Стоит ли изучать GNU Make?

В последнее время я чувствую необходимость изучать инструмент построения. Я просматриваю StackOverflow для рекомендаций, и Gnu Make почти не упоминается. Вместо этого я вижу Ant, Maven, CMake, Scon и многие другие. Однако, когда я смотрю на маленькие "источники изгоев" (как в не-в-репо), которые мне иногда приходится компилировать, все они требуют шагов make && make install.

Является ли обучение Ухудшение инвестиций моего времени, чем изучение другого инструмента?

Если да, то почему Make еще так популярен?

4b9b3361

Ответ 1

Сделать стандартным инструментом сборки для всего C/С++. Многие другие вышли на тарелку, но даже когда они были полезны и успешны, они никогда не достигали вездесущности.

Make установлен практически на всех Unix-подобных машинах. Независимо от того, работаете ли вы с AIX, Solaris, Irix, BSD или Linux, если там установлен компилятор, также создайте.

Некоторые из "замен" (например, Automake, CMake) даже создают Make файлы, которые в свою очередь выполняются make.

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

Даже если вы в конечном итоге используете другой инструмент построения, вы сможете "переработать" уроки, извлеченные с помощью make, поскольку базовые концепции очень похожи. И огромное количество make-built проектов означает, что всегда будет шанс, что вы должны найти существующий Makefile.

Одна вещь. Получите это с самого начала.

Ответ 2

Я думаю, что причина, по которой вы не видите (GNU), упоминается, что она часто является дефолтом; если у вас есть инструментальная цепочка GNU, у вас уже будет уже сделано. Таким образом, большинство людей, которые начинают говорить о инструментах построения, говорят о чем-то еще.

По моему опыту, make отлично, но это может быть довольно сложно, чтобы заставить его делать именно то, что вы хотите. Это может быть немного загадочно, но это доказано и работает.

Ответ 3

Make является популярным, потому что он использовался (в основном) для источников C/С++ в проектах Linux/* nix и намного старше любого из других инструментов, о которых вы упоминали, таким образом, он выдержал проверку временем и зреет, Породный девственник.

Чтобы быть честным с вами, я знаю только марку. Эти другие инструменты выше могут быть лучше, но так много проектов просто используют базовый Makefile, который вам лучше всего знать, по крайней мере, немного. Не только для ваших собственных проектов на работе, но и для большинства открытых исходных кодов, которые вы найдете в сети.

Ответ 4

На самом деле это зависит от того, сколько вы будете использовать.

Если yoy много работает с проектами C/С++, тогда да, я бы рекомендовал узнать больше об этом, так как большой файл make имеет более крутую кривую обучения, чем другие инструменты сборки, которые вы упоминаете.

Если вы не работаете с make или работаете на других языках, таких как С#, Java или PHP, тогда вам будет лучше изучать инструменты сборки, относящиеся к этим языкам.

Ответ 5

Как и все инструменты, если вы используете его вообще, вы должны поместить некоторое время превращаясь в разумно умело. Кроме того, некоторые инструменты (например, CMake, например) генерируют make файлы, и вы можете однажды столкнуться с этими сгенерированными файлами.

GNU make имеет отличное руководство - он, безусловно, стоит потратить час или два на чтение.

Ответ 6

Make - стандарт де-факто для Linux-систем, например. Это очень сложный инструмент, а также очень мощный инструмент.

Это хорошо подходит для изучения, если вы разрабатываете C или С++, особенно если вы используете Linux/* nix.

Одна из особенностей make заключается в том, что вы можете настроить зависимости для того, когда нужно перестроить файл. Например. каждый файл c или С++ встраивается в файл .obj, и в конце все файлы .obj связаны с исполняемым файлом. Но, возможно, исполняемый файл является статически связанной библиотекой, которая связана с другим исполняемым файлом с другими .obj файлами.

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

Если вы разрабатываете, например, С#, вам не нужна эта проверка зависимостей, потому что все файлы .cs скомпилированы сразу в один исполняемый файл.

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

Ответ 7

Даже если вы в конечном итоге предпочитаете другой инструмент сборки (лично я люблю VS... я знаю...) знание make, вероятно, окажется более полезным.

У Make есть много приложений, и хотя он не всегда идеален для одной задачи, при работе с новыми технологиями он является стойким и гибким.

Ответ 8

Я предполагаю, что вы работаете, возможно, по-другому, но я знаю, что везде, где я работал, я был бы гораздо менее ценным сотрудником, если бы не научился читать Makefile. Даже во всех средах Windows-VisualStudio время от времени возникает.

Например, мы просто получили задание, которое включает перенос кучи старого кода CX/UX в Windows. Старый код был создан с помощью make файлов. Невозможно понять их старую систему, не зная, как читать эти старые make файлы.