delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/04/03/18:49:04

From: Eli Zaretskii <eliz AT is DOT elta DOT co DOT il>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: using `notdir' inside a loop in a makefile
Date: Mon, 03 Apr 2000 20:53:53 +0200
Organization: NetVision Israel
Lines: 19
Message-ID: <38E8E8C1.756EF1D1@is.elta.co.il>
References: <200004031534 DOT KAA02746 AT darwin DOT sfbr DOT org>
NNTP-Posting-Host: ras1-p69.rvt.netvision.net.il
Mime-Version: 1.0
X-Trace: news.netvision.net.il 954787942 20126 62.0.172.71 (3 Apr 2000 18:52:22 GMT)
X-Complaints-To: abuse AT netvision DOT net DOT il
NNTP-Posting-Date: 3 Apr 2000 18:52:22 GMT
X-Mailer: Mozilla 4.7 [en] (Win98; I)
X-Accept-Language: en,ru,hebrew
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Jeff Williams wrote:
> 
> Would someone please explain why the following makefile fragment
> doesn't behave as expected?  Something about using `notdir' inside
> the `for' loop isn't working as desired.
> 
> subdirs = ./dir1/foo.1 ./dir2/bar.2
> test:
>         for k in $(subdirs) ; do \
>                 echo $$k ; \
>                 echo $(notdir $$k) ; \
>         done

There's no way this is going to work, because $(notdir) is a Make function,
while $$k is only expanded when the shell is run by Make.  So when Make comes
to expand $(notdir), it sees $$k as its argument, and that expands to itself
(since it has no leading directories).

You want to use `basename $$k` instead.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019