Bir belgede burada belge yönlendirme nasıl kullanılacağını bilen var mı?Belgede yeniden yönlendirme ile Makefile tarifi
test:
sh <<EOF
echo I Need This
echo To Work
ls
EOF
Ben (temelde tek bir satırında bir komut ile biter) olağan ters eğik çizgi yöntemi çalışırken herhangi bir çözüm bulamıyor.
Gerekçe:
I (örneğin, sh docker) bir komut ile vekil isteyen çok hatlı tarifleri bir dizi vardır.
onelinerecipe := echo l1
define twolinerecipe :=
echo l1
echo l2
endef
define threelinerecipe :=
echo l1
echo l2
echo l3
endef
# sh as proxy command and proof of concept
proxy := sh
test1:
$(proxy) <<EOF
$(onelinerecipe)
EOF
test2:
$(proxy) <<EOF
$(twolinerecipe)
EOF
test3:
$(proxy) <<EOF
$(threelinerecipe)
EOF
Kaçınılması gereken özüm: çok satırlı makroları tek satırlara dönüştürür.
define threelinerecipe :=
echo l1;
echo l2;
echo l3
endef
test3:
$(proxy) <<< "$(strip $(threelinerecipe))"
Bu (ı make 'kabuk olarak gmake 4.0 ve bash kullanarak) ama benim tarifleri yenilenmesi gerekir, ben çok şey var çalışır. Şerit, yeni satırları makrodan kaldırır, sonra her şey tek bir satırda yazılır.
Benim uç hedeftir: Tek bir kabuk çağırma tüm reçete hatları gönderecek olan Makefiledaki yerde çizgi .ONESHELL:
kullanma proxy := docker run ...
sh -c ''komutlarınızı buraya koymaya ne dersiniz? – fanton
Olası kopya [Makefile'de Heredoc?] (Http://stackoverflow.com/questions/5873025/heredoc-in-a-makefile) – e0k
@ e0k Bağlamı ekledim –