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?

    • pnutzh4x0rA
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      I just tried it with GNU make 4.3 and it worked.

      • bahmanm@lemmy.mlOP
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 year 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.