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?

  • jlsalvador@lemmy.ml
    ·
    1 year ago

    I didn't try yet: https://www.cmcrossroads.com/article/gnu-make-escaping-walk-wild-side

    colon := :
    $(colon) := :
    url := https$(:)//something
    
    • bahmanm@lemmy.ml
      hexagon
      ·
      1 year ago

      Unfortunately didn't work. I got the same *** target pattern contains no% error.