Page Summary
sobaker.livejournal.com - (no subject)
avva.livejournal.com - (no subject)
aeriman.livejournal.com - (no subject)
cmm.livejournal.com - (no subject)
fima.livejournal.com - (no subject)
ex-gregbg715.livejournal.com - (no subject)
avva.livejournal.com - (no subject)
cmm.livejournal.com - (no subject)
avva.livejournal.com - (no subject)
yuridichesky.livejournal.com - (no subject)
avva.livejournal.com - (no subject)
yuridichesky.livejournal.com - (no subject)
rowaasr13.livejournal.com - (no subject)
sartoris.livejournal.com - (no subject)
yuridichesky.livejournal.com - (no subject)
sartoris.livejournal.com - (no subject)
sartoris.livejournal.com - (no subject)
dimrub.livejournal.com - (no subject)
dimrub.livejournal.com - (no subject)
sartoris.livejournal.com - (no subject)
sartoris.livejournal.com - (no subject)
cmm.livejournal.com - (no subject)
cmm.livejournal.com - (no subject)
ex-gregbg715.livejournal.com - (no subject)
sartoris.livejournal.com - (no subject)
Style Credit
- Style: Neutral Good for Practicality by
Expand Cut Tags
No cut tags
no subject
Date: 2005-04-21 09:54 am (UTC)В Symbian SDK все до сих пор собирается с помощью perl-скриптов :)
no subject
Date: 2005-04-21 10:00 am (UTC)no subject
Date: 2005-04-21 10:10 am (UTC)no subject
Date: 2005-04-21 10:16 am (UTC)симптомы поражения мозга вирусом выглядят примерно так: если существует некий "стандартный" инструмент, заявленной целью существования которого является автоматизация работы типа X, то значит все работы типа X можно считать по сути одинаковыми, тривиальными и подлежащими автоматизации с помощью данного инструмента.
no subject
Date: 2005-04-21 10:20 am (UTC)no subject
Date: 2005-04-21 10:25 am (UTC)no subject
Date: 2005-04-21 10:25 am (UTC)Конечно, нет! Для сборки чего хошь наилучшим образом подходит коллекция из autoconf + autoheader + automake + aclocal + make.
Мыло и верёвка - опциональны.
no subject
Date: 2005-04-21 10:28 am (UTC)безнадёжно запущеный случай, в общем.
no subject
Date: 2005-04-21 10:36 am (UTC)Проблема была связана с тем, что сложный набор 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))
Заработало.
no subject
Date: 2005-04-21 11:25 am (UTC)GNU make, может, и плохой (я бы сказал, что не идеальный), но зато он есть, и делает все, что от него требуется.
no subject
Date: 2005-04-21 11:33 am (UTC)Над всей этой навороченной ad-hoc кучей невнятного, неинтуитивного синтаксиса, эзотерических комбинаций служебных символов, ни с чем не совместимых собственных расширений, постоянной путаницы с переменными среды, и прочих прелестей.
no subject
Date: 2005-04-21 11:37 am (UTC)Тулзы хорошие, но не самые простые. Кто, например, должен разбираться с версиями библиотек, с которыми нужно линковаться?
no subject
Date: 2005-04-21 11:46 am (UTC)А в остальном - вполне неплохой инструмент. Не сложнее тех же regexp'ов, которые незнакомому человеку тоже могут чем-то абсолютно нечитаемым показаться.
no subject
Date: 2005-04-21 11:49 am (UTC)Еще одна деталь: Makefile != Project file. Цель Makefile - указывать на последовательную взаимосвязь модулей. Вторичная цель - собирадь модули в кучу, пользуясь уже определенной взаимосвязью. Все остальные применения - изобретения "умельцев". Что ж поделаешь если GNU make очень уж "открыт" для разного рода издевательств?
И последнее. Насчет автотулзов. Они примитивны, как пять копеек. Просто надо прочесть документацию (хотя бы по диагонали). В большинстве случаев я начнинаю проект именно с автотулзов. В этом вся соль - начинать надо по человечески, иначе потом очень долго придется мучатся. В принципе там нужно ДВА файла создать и внести в них определения. Далее все происходит автоматически. А если хочется (ну очень) что-то свое добавить (что редко требуется) - вперед в m4.
Кстати - о последнем. С тех пор, как я преодолел "образовательный барьер" во всем что касается m4 (в частности благодоря автотулзам) я вообще не понимаю, зачем люди пишут СВОИ моторы обработки шаблонов... И себя не понимаю, когда вижу какую-то муть, написаную 3-4 года назад:))))
no subject
Date: 2005-04-21 11:50 am (UTC)Кстати, а какие альтернативы?
no subject
Date: 2005-04-21 11:52 am (UTC)Я конечно понимаю, что приятно порассуждать о том, что молоток никуда не годится в качестве разводного ключа...
no subject
Date: 2005-04-21 11:54 am (UTC)А так, в принципе - /usr/lib/lib.so -> /usr/lib/lib.so.latest.version. Это POSIX конвенция.
no subject
Date: 2005-04-21 11:55 am (UTC)no subject
Date: 2005-04-21 11:55 am (UTC)no subject
Date: 2005-04-21 12:02 pm (UTC)2) командная строка GCC поддерживается очень условно и не считается стандартной (в отличии от параметров среды, кстати говоря, которые и надо бы использовать в таких случаях). (А, да, это таки командная строка GCC, а не make, если уж на то пошло - MAKE просто слепо передает то, что ему пишут).
3) информацию о версии лучше передавать автоматически генерируемым include, который включается на уровне пре-процессора во все файлы.
no subject
Date: 2005-04-21 12:04 pm (UTC)no subject
Date: 2005-04-21 12:05 pm (UTC)я понимаю, но утрирую.
autotools, на самом деле, являются такой фиговиной вроде Перла: они весьма полезны для решения задач, которых не должно быть.
no subject
Date: 2005-04-21 12:11 pm (UTC)no subject
Date: 2005-04-21 12:14 pm (UTC)no subject
Date: 2005-04-21 12:19 pm (UTC)На самом деле СБОРЩИКОМ является именно autotools. А make это всего-лишь центральный инструмент (на равне с gcc, ld и так далее). Любой написаный "от-руки" или с помощью своих скриптов makefile - это уже "свой" сборщик.
Плюс аутотулз в том, что это действительно сборщик "на все случаи жизни". При этом он не так сложен, как его малюют. Минус аутотулз - дурная репутация и совершенно непонятная для большинства людей концепция.