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

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

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

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:52 am (UTC)
From: [identity profile] sartoris.livejournal.com
Хмм... Вы кажется не совсем понимаете для чего нужен make, а для чего автотулз. Поэтому так строго судите авторов.

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

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

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

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-21 12:20 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-04-21 12:50 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-04-21 12:54 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-21 01:07 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-04-21 01:25 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2005-04-21 01:36 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-21 02:18 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-21 02:29 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-04-21 03:01 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2005-04-21 01:28 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-21 02:12 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2005-04-21 02:55 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-21 03:31 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2005-04-21 03:58 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-21 05:35 pm (UTC) - Expand

(no subject)

From: [identity profile] delamon.livejournal.com - Date: 2005-04-22 06:12 am (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-21 02:30 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2005-04-21 02:47 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-21 03:21 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2005-04-21 03:29 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-21 03:38 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2005-04-21 03:57 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-21 05:44 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2005-04-21 07:23 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-22 08:28 am (UTC) - Expand

(no subject)

From: [identity profile] tejblum.livejournal.com - Date: 2005-04-22 10:22 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2005-04-22 11:32 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-23 09:57 am (UTC) - Expand

(no subject)

From: [personal profile] stas - Date: 2005-04-23 10:59 am (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-04-23 12:09 pm (UTC) - Expand

ObRant

Date: 2005-04-23 10:58 am (UTC)
stas: (Default)
From: [personal profile] stas
Я как раз хотел написать, что по сравнению с autotools make ещё ничего, но меня, вижу, уже опередили. Впрочем, запущенных случаев много - взять, к примеру, sendmail...
С другой стороны, я не уверен, что задача, поставленная перед autotools, вообще решается по-человечески в общем случае.

Date: 2005-04-21 10:25 am (UTC)
From: [identity profile] ex-gregbg715.livejournal.com
сорри, мой опыт использования 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: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
Аппликативный язык, плюс куча традиций, плюс длинная история. И при этом еще работатет. Может, еще нас всех переживет.

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

(no subject)

From: [identity profile] dimrub.livejournal.com - Date: 2005-04-21 11:55 am (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-04-21 12:11 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-21 12:19 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-04-21 12:42 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-21 12:47 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2005-04-22 01:31 pm (UTC) - Expand

(no subject)

From: [identity profile] yuridichesky.livejournal.com - Date: 2005-04-22 02:13 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2005-04-22 02:22 pm (UTC) - Expand

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

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-21 12:04 pm (UTC) - Expand

(no subject)

From: [identity profile] dimrub.livejournal.com - Date: 2005-04-21 12:41 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-21 12:44 pm (UTC) - Expand

(no subject)

From: [identity profile] perfect-man.livejournal.com - Date: 2005-04-23 12:27 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-23 04:57 pm (UTC) - Expand

(no subject)

From: [identity profile] perfect-man.livejournal.com - Date: 2005-04-23 05:00 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-23 05:14 pm (UTC) - Expand

(no subject)

From: [identity profile] perfect-man.livejournal.com - Date: 2005-04-23 06:12 pm (UTC) - Expand

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-23 06:16 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-04-23 10:25 pm (UTC) - Expand

а где у нас тут gcc

From: [personal profile] stas - Date: 2005-04-24 11:51 am (UTC) - Expand

Re: а где у нас тут gcc

From: [identity profile] cmm.livejournal.com - Date: 2005-04-24 12:27 pm (UTC) - Expand

за неровный почерк

From: [personal profile] stas - Date: 2005-04-24 12:42 pm (UTC) - Expand

спасибо!

From: [identity profile] cmm.livejournal.com - Date: 2005-04-24 07:12 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2005-04-24 12:54 pm (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2005-04-24 07:15 pm (UTC) - Expand

Date: 2005-04-23 11:16 am (UTC)
stas: (Don't panic!)
From: [personal profile] stas
всей этой навороченной ad-hoc кучей невнятного, неинтуитивного синтаксиса, эзотерических комбинаций служебных символов, ни с чем не совместимых собственных расширений

Это вы про Perl говорили? ;)

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:49 pm (UTC)
From: [identity profile] avva.livejournal.com
Да я что, спорю что ли, что лучше? :) Говорю же, огромная система, которую я исправить не могу.

(no subject)

From: [identity profile] sartoris.livejournal.com - Date: 2005-04-21 01:09 pm (UTC) - Expand

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

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

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

Date: 2005-04-25 10:04 am (UTC)
From: [identity profile] -pk-sly.livejournal.com
Как говорится, запрягать долго, за то езать быстро.

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. 28th, 2025 10:24 pm
Powered by Dreamwidth Studios