unfortunately it dose not work. I change the code as you suggest:BUILDUNITS := $(shell $(foreach unit,$(ALL_UNITS),cd $(REPOSITORY_ROOT)/units/$(unit)/source/sc/beh && $(MAKE) $(MAKECMDGOALS) BUILD_TYPE=$(BUILD_TYPE) 1>&2 && true)) or BUILDUNITS := $(shell $(foreach unit,$(ALL_UNITS),cd $(REPOSITORY_ROOT)/units/$(unit)/source/sc/beh && $(MAKE) $(MAKECMDGOALS) BUILD_TYPE=$(BUILD_TYPE) 1>&2;) && true) both doesn't work. maybe I write in a wrong way. do you have any other suggestion? Thank in advanced,
Tao Greg Chicares-2 wrote: > > On 2008-11-25 15:12Z, Tao T wrote: >> for some reason it seems more complicated to get rid of shell. >> do you have any suggestion to use shell? thanks~ >> currently my command have to change to :BUILDUNITS := $(shell $(foreach >> unit,$(ALL_UNITS),cd $(REPOSITORY_ROOT)/units/$(unit) && $(MAKE) >> $(MAKECMDGOALS) BUILD_TYPE=$(BUILD_TYPE) 1>&2;)) >> It looks more complicated. > > The original question was how to stop on the first error. That's > the normal behavior of 'make'. But the $(shell) command simply > passes a string to a shell, and 'make' doesn't know what that > shell is doing until it returns. So, if you really want to use > $(shell) this way, you have to write the command so that it > stops on error. I guess you could write '&&' instead of ';', and > do something about the last '&&', e.g. add 'true' at the end: > $(shell command0 && command1 && ... && command99 && true) > > > > _______________________________________________ > Help-make mailing list > [email protected] > http://lists.gnu.org/mailman/listinfo/help-make > > -- View this message in context: http://www.nabble.com/how-to-exit-the-parent_make-immediately-when-get-an-error-in-submake-tp20660308p20697153.html Sent from the Gnu - Make - Help mailing list archive at Nabble.com. _______________________________________________ Help-make mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-make
