I have 5 labels in Makefile:
all: label1 label2 label3 label4 last_label
I want last_label to be done last, and I want to use make -j. If I use .NOTPARALLEL, it will make all of them NOTPARALLEL, any suggestion on how to do that?
PRECIOUS depends on are given the following special treatment: if make is killed or interrupted during the execution of their recipes, the target is not deleted. See Interrupting or Killing make . Also, if the target is an intermediate file, it will not be deleted after it is no longer needed, as is normally done.
By default, the goal is the first target in the makefile (not counting targets that start with a period). Therefore, makefiles are usually written so that the first target is for compiling the entire program or programs they describe.
This means that when you do a "make all", make always thinks that it needs to build it, and so executes all the commands for that target. Those commands will typically be ones that build all the end-products that the makefile knows about, but it could do anything.
If the reason last_label needs to run last is that it needs data from the other labels, the best approach would be to tell make about that dependency:
all: last_label
last_label: label1 label2 label3 label4
If there's not a true dependency (i.e., if you don't want last_label to be rebuilt if one of the others changes), and if you're using GNU Make, you can specify these as "order-only" dependencies--make will just make sure they exist before last_label is built:
all: last_label
last_label: | label1 label2 label3 label4
Create a target specifying the four targets that can be executed in parallel & include this and last_label in the all target:
intermediate: label1 label2 label3 label4
all:
$(MAKE) intermediate
$(MAKE) last_label
This would execute the targets specified within intermediate in parallel, but intermediate and last_label would be forced consecutively.
(Note that the leading space before $(MAKE) is a TAB character.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With