avva: (Default)
[personal profile] avva
Читал документацию gmake. Смеялся сквозь слёзы.
Page 1 of 4 << [1] [2] [3] [4] >>

Date: 2005-04-21 09:54 am (UTC)
From: [identity profile] sobaker.livejournal.com
Это что.
В Symbian SDK все до сих пор собирается с помощью perl-скриптов :)

Date: 2005-04-21 10:00 am (UTC)
From: [identity profile] avva.livejournal.com
Зато какими шикарными make-файлами собирается сам perl!

Date: 2005-04-21 10:10 am (UTC)
From: [identity profile] aeriman.livejournal.com
Да. Хороший софт. Помнится мне приходилось собирать почивший в бозе MarsNWE. Так прежде чем его Makefile был нормально скушан, его пришлось в течении nnого времени обрабатывать sed'ом и awk'ом...

Date: 2005-04-21 10:16 am (UTC)
From: [identity profile] cmm.livejournal.com
идея что make наилучшим образом подходит для сборки чего хошь — это разновидность довольно общего мозгового вируса.

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

Date: 2005-04-21 10:20 am (UTC)
From: [identity profile] fima.livejournal.com
Это не до сих пор, так будет еще долго. Там была определённая идея заложена, а реализация оказалась ужасной (как это обычно бывает).

Date: 2005-04-21 10:25 am (UTC)
From: [identity profile] ex-gregbg715.livejournal.com
сорри, мой опыт использования make очень скромен. В каком месте там смеятся?

Date: 2005-04-21 10:25 am (UTC)
From: [identity profile] avva.livejournal.com
идея что make наилучшим образом подходит для сборки чего хошь

Конечно, нет! Для сборки чего хошь наилучшим образом подходит коллекция из autoconf + autoheader + automake + aclocal + make.

Мыло и верёвка - опциональны.

Date: 2005-04-21 10:28 am (UTC)
From: [identity profile] cmm.livejournal.com
autotools — порождение людей, считающих что make таки замечателен, надо ему только немно-ожечко помочь.
безнадёжно запущеный случай, в общем.

Date: 2005-04-21 10:36 am (UTC)
From: [identity profile] avva.livejournal.com
В общем, везде. Правда, я решил ту конкретную проблему, которая мне надоедала.

Проблема была связана с тем, что сложный набор make-файлов, который строит мой проект и который я не могу менять, добавлял в стандартный список макро-определений командной строки для компилятора что-то вроде -D$(FOO), где FOO - переменная, в которой хранится версия некоего продукта. После того, как недавно этот продукт начал использовать версию типа BAR3.5 (а не BAR1, BAR2, BAR3, как было раньше), make начал передавать компилятору
в командной строке -DBAR3.5, на что компилятор ругается следующими словами:

<command line>: warning: ISO C requires whitespace after the macro name

потому что точка не может быть частью имени макроопределения, и поэтому он считает, что имя - BAR3, значение - ".5", а то, что между ними нет проблема - вызывает ругань.

Меня эта ругань про компиляции каждого файла в большом проекте достала, и я полез разбираться, обнаружил вышеописанное, и пошёл читать документацию gmake, чтобы понять, как можно убрать эту гадость, которая мне нафиг не нужна, из моей командной строки, не меняя огромный набор make-файлов, который её туда пихает. Результат: в Makefile своего проекта добавить, после include'ов на этот огромный набор,

FOODEFINES := $(filter-out -D$(FOO),$(FOODEFINES))

Заработало.

Date: 2005-04-21 11:25 am (UTC)
From: [identity profile] yuridichesky.livejournal.com
Чем make виноват в том, что C чего-то там хочет? Тем более, что workaround нашелся. Конечно, нужно man-ы курить, а как же без них?

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

Date: 2005-04-21 11:33 am (UTC)
From: [identity profile] avva.livejournal.com
Я разве сказал, что плохой? Я сказал, что смеялся сквозь слёзы.

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

Date: 2005-04-21 11:37 am (UTC)
From: [identity profile] yuridichesky.livejournal.com
А, может, в консерватории что-нибудь подправить? :)
Тулзы хорошие, но не самые простые. Кто, например, должен разбираться с версиями библиотек, с которыми нужно линковаться?

Date: 2005-04-21 11:46 am (UTC)
From: [identity profile] rowaasr13.livejournal.com
Самое весёлое там - это существование некоторых вещей и в виде директив и в виде функций. Причём первые парзятся один раз при загрузке, а вторые при выполнении, что при случайном использовании одного вместо другого в некоторых комбинациях даёт наизабавнейшие результаты. Из документации это не очевидно и я как-то день потратил над одни Makefile, пока это понял.

А в остальном - вполне неплохой инструмент. Не сложнее тех же regexp'ов, которые незнакомому человеку тоже могут чем-то абсолютно нечитаемым показаться.

Date: 2005-04-21 11:49 am (UTC)
From: [identity profile] sartoris.livejournal.com
Толя, прости, но ты не прав. Уродство Makefile начинается там, где совершенно непонимающий принцип работы make человек изобретает велосипед.

Еще одна деталь: Makefile != Project file. Цель Makefile - указывать на последовательную взаимосвязь модулей. Вторичная цель - собирадь модули в кучу, пользуясь уже определенной взаимосвязью. Все остальные применения - изобретения "умельцев". Что ж поделаешь если GNU make очень уж "открыт" для разного рода издевательств?

И последнее. Насчет автотулзов. Они примитивны, как пять копеек. Просто надо прочесть документацию (хотя бы по диагонали). В большинстве случаев я начнинаю проект именно с автотулзов. В этом вся соль - начинать надо по человечески, иначе потом очень долго придется мучатся. В принципе там нужно ДВА файла создать и внести в них определения. Далее все происходит автоматически. А если хочется (ну очень) что-то свое добавить (что редко требуется) - вперед в m4.

Кстати - о последнем. С тех пор, как я преодолел "образовательный барьер" во всем что касается m4 (в частности благодоря автотулзам) я вообще не понимаю, зачем люди пишут СВОИ моторы обработки шаблонов... И себя не понимаю, когда вижу какую-то муть, написаную 3-4 года назад:))))

Date: 2005-04-21 11:50 am (UTC)
From: [identity profile] yuridichesky.livejournal.com
Аппликативный язык, плюс куча традиций, плюс длинная история. И при этом еще работатет. Может, еще нас всех переживет.

Кстати, а какие альтернативы?

Date: 2005-04-21 11:52 am (UTC)
From: [identity profile] sartoris.livejournal.com
Хмм... Вы кажется не совсем понимаете для чего нужен make, а для чего автотулз. Поэтому так строго судите авторов.

Я конечно понимаю, что приятно порассуждать о том, что молоток никуда не годится в качестве разводного ключа...

Date: 2005-04-21 11:54 am (UTC)
From: [identity profile] sartoris.livejournal.com
?! там разборка-то примитивная. Если не самая последняя версия нужна, а конкретная - нужно макро внести соответсвующий (по имени не помню, но в доках всё есть).

А так, в принципе - /usr/lib/lib.so -> /usr/lib/lib.so.latest.version. Это POSIX конвенция.

Date: 2005-04-21 11:55 am (UTC)
From: [identity profile] dimrub.livejournal.com
Ант рулит, короче.

Date: 2005-04-21 12:02 pm (UTC)
From: [identity profile] sartoris.livejournal.com
1) define с точкой вообще не дружит.
2) командная строка GCC поддерживается очень условно и не считается стандартной (в отличии от параметров среды, кстати говоря, которые и надо бы использовать в таких случаях). (А, да, это таки командная строка GCC, а не make, если уж на то пошло - MAKE просто слепо передает то, что ему пишут).
3) информацию о версии лучше передавать автоматически генерируемым include, который включается на уровне пре-процессора во все файлы.

Date: 2005-04-21 12:04 pm (UTC)
From: [identity profile] sartoris.livejournal.com
Кхе-кхе. Где он рулит-то? Я его ТРИ раза пытался пробовать... Мудохался пол дня, переписывал, переделывал всё... А потом он у меня на сотом файле где-то загнулся. Очень был разочарован. Тормозит страшно... Многотредовость не поддерживает. Соображает плохо. И главное примитивных сборок с ним так быстро, как с make не сделаешь...

Date: 2005-04-21 12:05 pm (UTC)
From: [identity profile] cmm.livejournal.com
> Хмм... Вы кажется не совсем понимаете для чего нужен make, а для чего автотул.

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

Date: 2005-04-21 12:11 pm (UTC)
From: [identity profile] cmm.livejournal.com
Ant, Scons, и вообще написать сборщик — не бином Ньютона, прямо скажем.  часто бывает сильно проще, чем насиловать make.

Date: 2005-04-21 12:14 pm (UTC)
From: [identity profile] ex-gregbg715.livejournal.com
спасибо за разъяснения.

Date: 2005-04-21 12:19 pm (UTC)
From: [identity profile] sartoris.livejournal.com
Хмм... Да... Проще. А потом кому-нибудь придется этот спец-сборщик насиловать... Точнее себя им насиловать. Вплоть до перевода всего на стандартный MAKE. (Мне приходилось это делать дважды)

На самом деле СБОРЩИКОМ является именно autotools. А make это всего-лишь центральный инструмент (на равне с gcc, ld и так далее). Любой написаный "от-руки" или с помощью своих скриптов makefile - это уже "свой" сборщик.

Плюс аутотулз в том, что это действительно сборщик "на все случаи жизни". При этом он не так сложен, как его малюют. Минус аутотулз - дурная репутация и совершенно непонятная для большинства людей концепция.
Page 1 of 4 << [1] [2] [3] [4] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 02:03 am
Powered by Dreamwidth Studios