Multiline commands in makefiles
Table of contents
Using multiline commands in make is usually a pain, I’ve tried so many ways and still you either have to use arcane extensions or just use a separate file that can be called from the makefile.
A pretty easy way to still achieve what you probably want to do is to use define:
Makefile:
define JSON_TODO # <1>
curl -X 'POST' \
'http://localhost:8080/todo' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"description": "string",
"done": true,
"dueDate": {
"due": "2021-05-07",
"start": "2021-05-07"
},
"title": "string"
}'
endef
export JSON_TODO # <2>
todo:
@echo $$JSON_TODO | bash # <3>
<1> This defines the variable JSON_TODO and sets the followed content separated by semicolons.
<2> The export is required to make this accessible to the shell.
<3> And this finally pipes the content of the variable through a bash shell.