help-make
[Top][All Lists]
Advanced

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

Re: Compute dependencies from target name


From: Paul Smith
Subject: Re: Compute dependencies from target name
Date: Sun, 13 Dec 2020 10:38:59 -0500
User-agent: Evolution 3.36.4-0ubuntu1

On Sat, 2020-12-12 at 23:40 -0500, Stefan Monnier wrote:
> I expect the `%` which appears within the $(shell..) to be replaced
> with the target's stem, but tests indicate that obviously this is not
> how it works.  I think this is related to what the manual says:
> 
>    Note that expansion using '%' in pattern rules occurs *after* any
>    variable or function expansions, which take place when the makefile is
>     read.  *Note How to Use Variables: Using Variables, and *note Functions
>     for Transforming Text: Functions.

Yes, exactly.  When this $(shell ...) function is run it uses the
literal value '%', because make cannot know what the pattern
replacement will be when it's reading in the makefile.

> But I don't know how to work around that.

There are a variety of ways but one simple one is secondary expansion:

https://www.gnu.org/software/make/manual/html_node/Secondary-Expansion.html

    .SECONDEXPANSION:

    packages/%.tar.gz : $$(shell find packages/% -name '*.el' -print | sed 
's/\.el/.elc/')
        tar -zcf packages/$*.tar.gz packages/$*

(note, untested)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]