🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #5111

Re: Wat doet volgende Makefile? (reguliere expressies)

#5111
From: Robrecht Jacques
Date: Mon, 02 Jun 2003 16:21
46 lines
2757 bytes
Gunter Schelfhout wrote:
> Nicolas Barbier wrote:
>>> ik
>>> vroeg me alleen af wat het eigenlijk juist doet:
>>> %.d: %.cxx
>>>         set -e; $(CC) -MM $(CFLAGS) $< | sed 's/\($*\)\.o[ :]*/\1.o
>>>         $@ : /g' > $@;
>>> [ -s $@ ] || rm -f $@
[...]
>> *: match nul of meerdere keren het vorige, ik denk dat je dit
>> verkeerd hebt overgetypt? Het lijkt me dat dit .* moet zijn (matcht
>> alles).
>
> Vermits het hier een shell-pipe betreft, is die $* de desbetreffende
> shell-variabele. (net zoals $@)

Heeft niet echt iets met de shell te maken, maar met de speciale variabelen
van 'gmake', net als $@ en $<. Zie het deel over 'Automatic Variables' in
de info-file van 'gmake'.

  $* : The stem with which an implicit rule matches... The stem is
       useful for constructing names of related files.
  $< : The name of the first dependency.
  $@ : The file name of the target of the rule.

De betekenis van deze variabelen in een shell (bv 'bash') is volledig
anders:

  $* : Expands to the positional parameters, starting from one.
  $@ : Expands to the positional parameters, starting from one. (maar dan
       anders als gebruikt als "$@" in vgl met "$*").
  $< : bestaat niet in een shell

[...]
>> De g duidt op meerdere keren vervangen als het meerdere keren
>> voorkomt (ik snap niet echt waarvoor dit nodig is).
>
> Omdat $* meerdere argumenten kan bevatten.

Niet waar. De 'stem' zal altijd maar ��n argument zijn. Bv in bovenstaande
rule (%.d: %.cxx) zal voor het bestand 'foo/bar.cxx' de stem 'foo/bar'
zijn.

Ik denk trouwens niet dat de '/g' nodig is.

Robrecht
Technical Details
Message-ID: <3edb7a45$0$11120$ba620e4c@reader0.news.skynet.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-04!sn-xit-01!sn-xit-09!supernews.com!diablo.theplanet.net!mephistopheles.news.clara.net!news.clara.net!skynet.be!skynet.be!louie!tlk!not-for-mail
References: <bb7qnc$38c$1@reader08.wxs.nl> <3ed77a1c$0$6531$afc38c87@sisyphus.news.be.easynet.net> <Z_2Ca.30325$1u5.2115@afrodite.telenet-ops.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII
X-Google-Thread: fcea4,e99e0c65c5ba9bfb
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2003-06-02 09:24:42 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-04!sn-xit-01!sn-xit-09!supernews.com!diablo.theplanet.net!mephistopheles.news.clara.net!news.clara.net!skynet.be!skynet.be!louie!tlk!not-for-mail
From: "Robrecht Jacques" <Robrecht.Jacques@advalvas.be>
Newsgroups: be.comp.programming
References: <bb7qnc$38c$1@reader08.wxs.nl> <3ed77a1c$0$6531$afc38c87@sisyphus.news.be.easynet.net> <Z_2Ca.30325$1u5.2115@afrodite.telenet-ops.be>
Subject: Re: Wat doet volgende Makefile? (reguliere expressies)
Date: Mon, 2 Jun 2003 18:21:59 +0200
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Lines: 48
Message-ID: <3edb7a45$0$11120$ba620e4c@reader0.news.skynet.be>
Organization: -= Belgacom Usenet Service =-
NNTP-Posting-Host: 80.200.74.139
X-Trace: 1054571077 reader0.news.skynet.be 11120 80.200.74.139:1024
X-Complaints-To: abuse@skynet.be