help-make
[Top][All Lists]
Advanced

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

Change a target within Makefile?


From: Masahiro Yamada
Subject: Change a target within Makefile?
Date: Wed, 24 Jul 2024 18:44:37 +0900

Hi.

My question is very similar to this:
https://stackoverflow.com/questions/31443920/remove-target-from-makecmdgoals

When a particular flag is set, I want to do something extra.
I know this is hard, but please forgive me to repeat a similar question
in case somebody in the list may know something.


The following Makefile illustrates what I'd like to do.
Of course, it does not work since MAKECMDGOALS is read-only.


----------->8-------------
ifdef GENERATE_B_AS_WELL
# When this flag is set, we want to generate %.b as well.
# I know I cannot update MAKECMDGOALS...
MAKECMDGOALS := $(patsubst %.a, %.b, $(MAKECMDGOALS))
endif


%.a:
        touch

%.b: %.a
        cp $< $@
----------->8-------------


Then, I hope the following would happen.


$ make x.a
   -> create x.a


$ make x.a GENERATE_B_AS_WELL=1
   -> create x.b as well as x.a






If recursion is allowed, the following might work, but
I'd hope to find something simpler in a single invocation of Make.

-------------------->8----------------
ifdef GENERATE_B_AS_WELL

%a:
        $(MAKE) $(patsubst %.a,%.b,$@) GENERATE_B_AS_WELL=

else

%.a:
        touch

%.b: %.a
        cp $< $@

endif
-------------------->8----------------







-- 
Best Regards
Masahiro Yamada



reply via email to

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