cross-posted from: https://lemmy.ml/post/3229278

Suppose I’ve got a simple #Makefile w/ a few URLs that I’d like to process as dynamic targets.

For example here is a not working snippet:

.DEFAULT_GOAL := all

#####
URLS  = https://foo.example.com
URLS += https://bar.example.com
URLS += https://www.example.org

#####
% :
	@echo the url is $(*)

#####
.PHONY : all
all : $(URLS)

It fails w/

*** target pattern contains no ‘%’

I believe that’s b/c of the character : being part of URLS which confuses Make after expansion (order o

As a workaround, I’ve removed https:// from all URLs. For example this works:

URLS = foo.example.com
URLS += bar.example.com

I know Make generally doesn’t play well w/ targets w/ space or colon in the name but I wonder if the above is the best I can do. What do you think?

  • bahmanm@lemmy.mlOP
    link
    fedilink
    English
    arrow-up
    2
    ·
    11 months ago

    Oh, it works 🎉 Thank you!

    For posterity here’s a complete example:

    foo\:bar :
    	@echo $(@)
    

    and then

    $ make foo:bar
    foo:bar
    

    Though, TBH, I don’t understand how this works 🤦‍♂️ I need to look into Make docs.