[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Чем плох рекурсивный make?



Dmitry E. Oboukhov -> debian-russian@lists.debian.org  @ Thu, 2 Oct 2008 12:11:21 +0400:

 AC>>>>> понимаешь в чем дело, в том что если бы make догадывалось об этом то ей
 AC>>>>> пришлось бы перестать быть универсальным инструментом (вон выше по ветке
 AC>>>>> собирают PDF например, а какой там DEBUG) и стала бы
 AC>>>>> узкоспециализированным. а это неправильно.

 AC>>>> Дебуга там нет, но вообще-то pdftex-у в командную строку тоже много чего
 AC>>>> интересного запихать можно. Во всяких bras и makepp эта задача решена
 AC>>>> посредством запоминания того, какой именно командой данный target
 AC>>>> пересобирался последний раз. И если текущая команда получается другая,
 AC>>>> target считается устаревшим.
 AC>>> ну так я говорю, значит просто надо DEBUG поставить в зависимости
 AC>>> и далее проблема станет решенной

 AC>> Надо _сложно_ поставить в зависимости DEBUG.  Иначе оно будет
 AC>> пересобирать всё каждый раз.  Подозреваю, что сделать это можно, но
 AC>> вплотную еще не думал.  Есть шанс, что и не получится.

 DEO> а мое решение сложно?

А это не решение.

 DEO> то есть пишем в Makefile

 DEO> DEBUG ?= 0  # кстати не помню ?= это GNUmake или вообще make? хез

 DEO> ...

 DEO> debug_depends:
 DEO>     test -e $@ || echo $(DEBUG) > $@
 DEO>     test "`cat $@`" = "$(DEBUG)" || echo $(DEBUG) > $@

 DEO> и дальше ставим зависимость от debug_depends

 DEO> то есть получится что make его перезаписывать будет только при смене
 DEO> переменных

 DEO> и соответственно в зависимости:

 DEO> %.o: %.c debug_depends

Начнем с того, что make его вообще перезаписывать не будет.  Он его
запишет один раз, и все.

Ты б хоть проверил свое "решение", прежде чем предлагать.  Ладно б
требовалось подобрать к нему хитрую последовательность команд, чтобы
увидеть, что не работает, а то ведь тупее некуда - make да make
DEBUG=1...

-- 
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru

The effort of using machines to mimic the human mind has always struck
me as rather silly. I would rather use them to mimic something better
 -- Edsger Dijkstra


Reply to: