Подскажите как пишется Makefile

Автор: Юрий Клещетников Дата: 14.02.2008 15:02 Конечно мне не надо напоминать, что это не к разработчикам ASP вопрос, но я часто встречаю программы в исходных кодах,
к которым не приложен сей Makefile. А без него я не знаю как заставить программу собраться. Везде пишется
не указаны цели и не найден Makefile.

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

Большое спасибо за внимание к моей проблеме!
Re: Подскажите как пишется Makefile 14.02.2008 15:21lg Прочитайте GNU make manual.
Там расписано достаточно подробно и с примерами
---
info make
---
Только я совершенно не уверен, что это вам нужно. И как вы заметили, для таких вопросов существует общий форум
Re: Подскажите как пишется Makefile 14.02.2008 15:25Юрий Клещетников Спасибо за подсказку! Почитаю. Улыбка
Re: Подскажите как пишется Makefile 14.02.2008 21:38kosmonavt >но я часто встречаю программы в исходных кодах,
>к которым не приложен сей Makefile.

Иногда, к исходникам прилагается генератор Makefile-а. Об этом обычно пишут в файлах README/INSTALL.
Re: Подскажите как пишется Makefile 16.02.2008 08:00Bircoph > Иногда, к исходникам прилагается генератор Makefile-а. Об
> этом обычно пишут в файлах README/INSTALL.

Почти всегда ;-): configure, или даже генераторы configure: autoconf, cmake,...

Но лично я предпочитаю писать ./configure вручную.
Re: Подскажите как пишется Makefile 16.02.2008 11:14Юрий Клещетников Я в прошлом году пытался написать простую программу на cpp.
В этом случае нужно самому писать Makefile или есть какая-нибудь хитрость,
какая нибудь команда, которая пропишет за меня все заголовочные файлы и этот Makefile ?
Re: Подскажите как пишется Makefile 16.02.2008 12:53BigAndy >какая нибудь команда, которая пропишет за меня все заголовочные файлы и этот Makefile ?
Про makefile уже все сказано.
А кто-ж кроме вас напишет .h файлы?

Кстати открою секрет: Есть еще и тип программирования когда пишется планарная программа, даже без подпрограмм Улыбка

А вот configure придется писать самому, если хотите публиковать свои программы.
Re: Подскажите как пишется Makefile 16.02.2008 20:51Юрий Клещетников Мне до этого как до луны пешком.
Я просто хочу хоть что0нибудь написать,
что реально заработает.
Юудем стараться.
Re: Подскажите как пишется Makefile 16.02.2008 21:36BigAndy Все заработает!
Hello World рулит Улыбка
Re: Подскажите как пишется Makefile 17.02.2008 02:48kosmonavt [www.linux.org.ru]

подойдет?
Re: Подскажите как пишется Makefile 17.02.2008 10:43BigAndy Хорошая книжечка. Уже заказал hardcopy Улыбка
Re: Подскажите как пишется Makefile 17.02.2008 13:35Юрий Клещетников Спасибо за ссылку!!!!
Re: Подскажите как пишется Makefile 18.02.2008 09:21peter_ir Bircoph писал(а):

> Почти всегда ;-): configure, или даже генераторы configure:
> autoconf, cmake,...
>
> Но лично я предпочитаю писать ./configure вручную.

А разве это удобно и надежно? Как потом быть уверенным, что ничего не упустил?
У меня сохранена html-страница на русском с описанием того, как пользоваться программами для
генерации configure, насколько я сейчас помню, они делают также всякую рутинную работу.
Re: Подскажите как пишется Makefile 18.02.2008 10:19BigAndy А потом разбираться с тем, что они наффтыкали в ваш configure. Времени боольше уходит.
Re: Подскажите как пишется Makefile 20.02.2008 09:48Bircoph > А разве это удобно и надежно? Как потом быть уверенным,
> что ничего не упустил?

Пётр, создаётся такое впечатление, что вы не понимаете, что
такое configure и для чего он нужен.

Если вы пишете программу для конкретной системы, то Makefile
хватит. Если вы хотите, чтоб программа подстраивалась под
систему сборки, то делаете configure: библиотеки могут лежать
в других местах, компилятор не может не поддерживать какие-то
флаги и т.п..

Все эти вещи обязан знать разработчик программы. Что можно
упустить? Забыть, какую библиотеку вы используете или каким
компилятором компилируете? Кроме того, работа configure --
включать/выключать части (функционала) программы в
зависимости от желаний пользователя.

autoconf-utils часто называют autocrap-utils и многие
серьёзные проекты, например, mplayer, ffmpeg, x264, ядро (кстати) используют свои configure/системы сборки.

Почему?
1) В случае возникновения проблем хрен разберёшься, что эта
ерунда нагенерировала. Качество автогенерированного кода
скрипта низкое.

2) Они слишком умные: даже если пользователь говорит
--enable-feature, они выполняют проверки, хотя нужные ключи
и пути пользователь может задать сам с помощью --extra-*.

3) Там нет и практически не реально добавить очень важную
функциональность: автоматическую оптимизацию кода под текущую
или под заданную пользователем архитектуру. Правда, в
gcc >= 4.2.0 есть -march=native, решающий эту проблему, но
сколько дистрибутивов и каких версий сейчас используют
gcc >= 4.2.0? ./configure мои программ умеет оптимизировать
ключи под текущее железо (правда, только для x86/x86_64
архитектур).

4) Эта дрянь выполняет много не нужных проверок,
например, требует, чтоб текущее время было больше времени
создания самого последнего файла. Это глупо: например, на
моём стареньком ноутбуке сдохла батарея, ntp доступен не
всегда и приходится руками переводить время перед сборкой
таких программ.

Мало того, если в вашей системе используется ntpd, то вполне
возможно, что дата создания файла окажется на несколько
микросекунд в будущем, чего хватит для помирания autoconf.
У меня такое было пару раз на десктопе (когда ntpd сбрасывал
время без плавного перехода из-за большого джиттера
кремниевого таймера, nForce2 этим страдают).

5) auto*-утилиты слишком медленные, их мегабайтные скрипты
работают весьма долго, иногда компиляция (с использованием
ccache) происходит быстрее.

Что качается рутинной работы, то её нужно сделать только раз,
или не делать вообще, а использовать готовые hand-made
скрипты других проектов, если лицензии совместимы.
Re: Подскажите как пишется Makefile 01.03.2008 13:03kramer Юрий, по-моему, Makefile стоит писать только если Ваша прога состоит из многих cpp файлов, по которым разбросан код. Для прог из одного файла можно вызвать компилер и вручную.
Re: Подскажите как пишется Makefile 01.03.2008 13:58peter_ir Bircoph писал(а):

> > А разве это удобно и надежно? Как потом быть уверенным,
> > что ничего не упустил?
>
> Пётр, создаётся такое впечатление, что вы не понимаете, что
> такое configure и для чего он нужен.
>
> Если вы пишете программу для конкретной системы, то Makefile
> хватит. Если вы хотите, чтоб программа подстраивалась под
> систему сборки, то делаете configure: библиотеки могут лежать
> в других местах, компилятор не может не поддерживать какие-то
> флаги и т.п..

Это разъяснялось на той странице, которую я имел в виду, хорошо также, что рутинную
работу надо сделать только однажды, но вот объём её пугает, ведь размер configure бывает
и десятки килобайт. Можно сказать, что я убоялся бездны премудрости.
Re: Подскажите как пишется Makefile 02.03.2008 08:10Bircoph > ведь размер configure бывает и десятки килобайт.

Размер автоматически сгенерированного configure нередко
в мегабайтах исчисляется ;-).

А ручной вариант -- да, десятки килобайт и даже больше,
в зависимости от размера проекта.
RSS-материал