From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Mon, 24 Jan 2005 10:55:51 +0200 From: "Dmytro O. Redchuk" To: community@altlinux.ru Subject: Re: [Comm] Re: Makefile HELP! Message-ID: <20050124085551.GE1978@ldc.net> Mail-Followup-To: community@altlinux.ru References: <20050121072314.GA10143@ldc.net> <41F490A4.3030406@vzljot.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-u Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <41F490A4.3030406@vzljot.ru> User-Agent: Mutt/1.4.2.1i X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: community@altlinux.ru List-Id: Mailing list for ALT Linux users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 Jan 2005 08:55:53 -0000 Archived-At: List-Archive: List-Post: On Mon, Jan 24, 2005 at 09:07:32AM +0300, Vitaly Ostanin wrote: > > Dmytro O. Redchuk пишет: > >Добрый день. > > > > Вот возник вопрос -- не могу справиться. > > > > Скажите, можно ли (хочу надеяться, что "да") в Makefile понять, > > выполнялась ли какая-то определённая цель? > > > > Например: > > 0 a_lot_of_files = foo moo bar > > 1 > > 2 backup: $(a_lot_of_files) > > 3 ifeq($(MAKECMDGOALS),check) > > 4 # да нет, никаких бэкапов, мы только проверяем... > > 5 esle > > 6 # пум-пурум, пам-парам... > > 7 endif > > 8 > > 9 check: backup > > 10 # а выполнялся ли backup?! > > 11 # если ДА, то бэкаповых файлов НЕТ. > > 12 # если НЕТ, то всё ОК. > > > > > > Пробовал где-то в строке 4 писать что-то типа define NO_BACKUP, но > > потом запроблемилось его проверить где-то в строке 10 (как ни пробовал, > > не получается:) > > > > Можно, конечно, играться с переменной $?, но в ней может быть слишком > > много всего, а мне нужно проверить только одну цель, например. > > Можно попробовать поиск вхождения этой цели в $?, ну и $^ может > пригодиться. Тут проблема в том, что переменные $?, $^ и иже с ними становятся переменными *внутри* цели. А проверки ifeq () делаются на верхнем уровне, гед эти переменные ещё не... Насколько я понял. А пытаться перекидывать эти переменные в окружение показалось "кострубатым". > В вашем случае можно указать зависимость бакапных файлов от > исходных и не делать цели с циклическими зависимостями. (Может, кому пригодится..) Пока что больше всего нравится такое (Makefile получается более читабельный): check: # check for backup files: @$(MAKE) -q backup >/dev/null 2>&1 \ && echo 'Backup files present.' \ || echo 'Backup files NOT present.' # check for filter files: @$(MAKE) -q filters 2>/dev/null 2>&1 \ && echo 'Filter files present.' \ || echo 'Filter files NOT present.' (Не пинайте за велосипед, плиз) Хотя "академически" вопрос остался открыт -- можно ли красиво проверить, выполнялась ли какая-то цель :-) Но занудствовать не буду, пока остановлюсь, а там видно будет... Пусть подкорка ещё помолотит... > > > > -- > Regards, Vyt > mailto: vyt@vzljot.ru > JID: vyt@vzljot.ru -- _,-=._ /|_/| `-.} `=._,.-=-._., @ @._, `._ _,-. ) _,.-' ` G.m-"^m`m' Dmytro O. Redchuk