Make не успява да анализира съвместни цели (множество цели) в makefile

Co-targets (т.е. списък с думи, разделени с интервали за target), е добре позната функция на Make, която по същество позволява makefile да сглобява "подобни" цели (т.е. те споделят същата рецепта и предварителни условия) в едно правило.

И така, имам makefile, като:

define targets
foo
bar
baz
endef

$(targets) ::
    @echo '$@'



Изпълнявам, получавам:

/bin/sh: 1: Syntax error: Unterminated quoted string
makefile:8: recipe for target 'foo
bar
baz' failed
make: *** [foo
bar
baz] Error 2



Наистина ли?


person Ji Cha    schedule 27.08.2015    source източник


Отговори (1)


targets := foo bar baz

$(targets) ::
    @echo '$@'

define се използва за създаване на променлива, която съдържа нови редове. Това не е това, което искате, вие просто искате бели интервали.

person Olivier Diotte    schedule 27.08.2015