I am setting a variable in a makefile
like this:
SOMEVAR = foo
This makefile later includes some other makefile
in which the actual building of programs takes place:
include generic/Makefile.common
So no build targets are defined in the first makefile
, it's only setting up variables which are then used by the common generic makefile
to do the actual package building.
Now I know that I should be careful when using foo
, so to remind myself of this, I want to print a warning message whenever this makefile is used to setup the make process. The problem is that I cannot just insert an echo
command after the variable definition, because we are not yet building something there.
Is there a solution (more elegant than adding a fake target where the message is printed which would destroy the separation of setting variables and building)?
?= indicates to set the KDIR variable only if it's not set/doesn't have a value. For example: KDIR ?= "foo" KDIR ?= "bar" test: echo $(KDIR) Would print "foo"
The $@ and $< are called automatic variables. The variable $@ represents the name of the target and $< represents the first prerequisite required to create the output file. For example: hello.o: hello.c hello.h gcc -c $< -o $@
$$ means be interpreted as a $ by the shell. the $(UNZIP_PATH) gets expanded by make before being interpreted by the shell.
= defines a recursively-expanded variable. := defines a simply-expanded variable.
SOMEVAR = foo
$(warning be careful with foo)
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