I’m having hard time writing a makefile rule that outputs a multiline variable in a file.
Here is the code I have :
define VAR1
/dev d 755 - - - - -
endef
define VAR2
/test d 777 - - - - -
/test2 d 777 - - - - -
endef
VARS += $(VAR1)
VARS += $(VAR2)
all:
echo "$(VARS)" > test
However, the echo fails telling “Unterminated quoted string” for a reason unknown to me.
How could i put in the file every lines declared on a separate line ?
If you export the variable to the shell and reference it as a shell variable, rather than a make variable, you will have better luck:
Note the following adjustments to your makefile:
defineto createVARS, rather than a series of+=assignments, which makes it easier to get a newline between the value ofVAR1andVAR2.export VARSto your makefile, to get the variable pushed into the environment for the shell invocation.$$VARSrather than$(VARS)to dereference it — that leaves the expansion to the shell, rather than to make, which will avoid the “Unterminated quoted string” error.