|
Makefile |
|
|
|
Aug 14 2015, 04:32
|
Группа: Новичок
Сообщений: 7
Регистрация: 13-08-14
Пользователь №: 82 535

|
Кто может разъяснить зачем нужен makefile?! На просторах интернета внятной информации не нашел. К примеру в некоторых темах пишут что при правки makefile нужно указывать тип микроконтроллера, рабочаю частоту и т. д. Я работаю в atmel studio и там в makefile нет таких пунктов. Просто хочется для общего развития понимать зачем он нужен и почему он бывает разный.
|
|
|
|
|
 |
Ответов
|
Aug 14 2015, 05:14
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
Цитата(alexxx86 @ Aug 14 2015, 09:32)  Кто может разъяснить зачем нужен makefile?! Makefile изначально использовался в среде типа UNIX, которые построены на парадигме управления задачами посредством команд, которые вводятся в консоли (символьной -- а графических консолей тогда и не было) с клавиатыры. Результат выполнения также отображался в символьном виде на экране тойже консоли. Вместо экрана висплея можно было подключить принтер. А почему бы нет! Ну Вы поняли! Кнопочек и менюшечек не было. Мышей -- тоже. А управлять заданиями, то есть работать на компе было нужно. Вопрос -- как? Единственный выход в те времена -- использование клавиатуры и экрана (принтера). Понтное дело, что при таком раскладе ни о какой графике говорить уже не приходилось. Команды системе отдавались в виде слов, и получение резултата вываливалось на экран тоже в виде слов. Ну это прописные истины. Я их сказал тоько для того, что бы мы понимали друг друга однозначно. Идем дальше. Набирать какжый раз серию команд было неудобно. Поэтому встал вопрос об автоматизации действий программиста (пользователя). Одно из направлений автоматизации было использование скриптовых файлов, в которых команды записывались по-сторочно. Это в некоторой степени аналог виндовых BAT-файлов. Другом направленим автоматизации работы программиста-разработчика было направление makefile. В файле Makefile описывается не последовательность команд, а цели, которые нужно выполнить. Иначе говоря последовательность дейстий для достижения цели определяется не последовательностью строк, а наоснове других соображений. Ну например, если объектный файл уже имеется, то повторно компилировать исходник уже не надо.( Ну это грубый пример. более изящный я сейчас не в состоянии придумать.) В общем, в файле Makefile перечисляются исходные положения -- типа каким компилятором будем пользоваться, где и какие расположены библиотеки, каким линковщиком будем собирать проект, к стати -- имя проекта, состав файлов проекта, зависимости файлов друг от друга, тип процессора, тактовая частота... ну и другие параметры. Всего не перечислить! Да, в общем-то, и нет это нужно. Makefile в самом минимальном варианте тоже рулят. Мне иногда приходится создавать тестовые пректики. Поэтому накидать с нуля Makefile из десятка строк иногда бывает проще, чем адаптировать мега-Makefile из соседнего проекта. В Видовсе принято программировать мышкой. Поэтой причине в Виндовсе Makefile-ы не очень распространены. И правда, какой смысл в файле, если все параметры контролируются средой разработки (IDE), и сама среда уже знает какой компилятор использовать? Если Вы не собираетесь пробовать Линукс, то и заморачиваться особо на эти Makefiles Вам нет никакого смысла. Это в среде Линукса зание Makefile жизненно необходимо.
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
Aug 14 2015, 05:34
|
Группа: Новичок
Сообщений: 7
Регистрация: 13-08-14
Пользователь №: 82 535

|
zhevak, спасибо за ответ! В общих чертах я понял про makefile. Мне больше не понятно другое, к примеру берем какой нибудь чужой проект с всеми исходниками и makefileом, в makefile указан тип микроконтроллера и рабочаю частота. Или другой пример, решил я почитать про bootloaded, нашел тему где все подробно расписано и есть все исходники и makefile, опять-же там указывается тип и частота. Я работаю в atmel studio 6, там автоматически генерируется makefile, но там нет таких пунктов. Вот мне и не понятно почему где-то указывается тип и частота а где-то нет.
Сообщение отредактировал alexxx86 - Aug 14 2015, 05:36
|
|
|
|
|
Aug 14 2015, 05:52
|
Знающий
   
Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153

|
Цитата(alexxx86 @ Aug 14 2015, 08:34)  zhevak, спасибо за ответ! В общих чертах я понял про makefile. Мне больше не понятно другое, к примеру берем какой нибудь чужой проект с всеми исходниками и makefileом, в makefile указан тип микроконтроллера и рабочаю частота. Вот мне и не понятно почему где-то указывается тип и частота а где-то нет. Задача то какая? Взять проект с makefile-ом и собрать его в атмел-студии? Берите исходники, добавляйте их в студийный проект и собирайте. Процессор в студии где-то точно выбирается. Что такое частота? Некий define, заданный в makefile, который потом используется в исходниках? Подозреваю, что в GUI студии есть возможность указать произвольные define-ы... Ну т.е. в makefile все опции компилятора заданы напрямую, текстом. В студии их надо задавать через окно свойств проекта. Makefile потенциально может много больше, чем студия - к примеру дергать какие-то дополнительные утилиты и т.п. Но в простых случаях он без проблем заменяется настройками в окне свойств проекта.
|
|
|
|
|
Aug 14 2015, 06:07
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (Непомнящий Евгений @ Aug 14 2015, 08:52)  Ну т.е. в makefile все опции компилятора заданы напрямую, текстом. Не только, есть еще использование переменных enviroment. Ну и управление проектом это не только "опции компилятора". В реальности проект это зачастую вобще не одно изделие, а группа устройств, зачастую даже на разных контролерах и под разные компиляторы. Прелесть ПОЛНОГО контроля, и в том, что я могу описать правила сборки действительно ВСЕГО проекта со всеми вариантами.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
alexxx86 Makefile Aug 14 2015, 04:32 Непомнящий Евгений На просторах интернета информации о make выше крыш... Aug 14 2015, 05:10 zltigo QUOTE (zhevak @ Aug 14 2015, 08:14) В Вид... Aug 14 2015, 05:34  _Pasha Цитата(zltigo @ Aug 14 2015, 08:34) Наска... Aug 14 2015, 06:53   Непомнящий Евгений Цитата(_Pasha @ Aug 14 2015, 09:53) А до... Aug 14 2015, 07:30    _Pasha Цитата(Непомнящий Евгений @ Aug 14 2015, 10... Aug 16 2015, 11:39     zltigo QUOTE (_Pasha @ Aug 16 2015, 14:39) потом... Aug 16 2015, 12:17   zltigo QUOTE (_Pasha @ Aug 14 2015, 09:53) А до... Aug 14 2015, 14:35    alexxx86 zltigo, Ну если я ни чего не понял, тогда объяснит... Aug 14 2015, 14:46     zltigo QUOTE (alexxx86 @ Aug 14 2015, 17:46) zlt... Aug 14 2015, 15:15  ataradov QUOTE (alexxx86 @ Aug 13 2015, 22:34) Я р... Aug 14 2015, 05:37  zhevak Цитата(alexxx86 @ Aug 14 2015, 10:34) Мне... Aug 14 2015, 07:55   alexxx86 zhevak, Получается что если проект состоит из не ... Aug 14 2015, 10:14    kolobok0 Цитата(alexxx86 @ Aug 14 2015, 13:14) ...... Aug 14 2015, 15:08    zhevak Цитата(alexxx86 @ Aug 14 2015, 15:14) zhe... Aug 14 2015, 16:33     alexxx86 zhevak, Спасибо вам большое, за подробные и развер... Aug 14 2015, 17:25     zltigo QUOTE (zhevak @ Aug 14 2015, 19:33) 4) в ... Aug 14 2015, 19:03      Canis Dirus Цитата(zltigo @ Aug 15 2015, 00:03) А за ... Aug 15 2015, 10:09       zltigo QUOTE (Canis Dirus @ Aug 15 2015, 13:09) ... Aug 15 2015, 14:03        zhevak ЦитатаА за такое, как Вы описали, вообще надо бить... Aug 15 2015, 15:31         zltigo QUOTE (zhevak @ Aug 15 2015, 18:31) Если ... Aug 15 2015, 15:48          zhevak @zltigo
Мои извинения. Наверно я не правильно Вас ... Aug 15 2015, 16:39           zltigo QUOTE (zhevak @ Aug 15 2015, 19:39) @zlti... Aug 15 2015, 16:45 ataradov QUOTE (alexxx86 @ Aug 13 2015, 21:32) Я р... Aug 14 2015, 05:26 gerber Рискну пойти против течения... но в абсолютному бо... Aug 16 2015, 12:30 kolobok0 Цитата(gerber @ Aug 16 2015, 15:30) ...пр... Aug 16 2015, 12:42 zltigo QUOTE (gerber @ Aug 16 2015, 15:30) ошибо... Aug 16 2015, 12:52
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|