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.