Georgi Chorbadzhiyski wrote:
Имам 2 Makefile [1], [2]. При пускане на make както се очаква резултат е:
CROSS=sh4-linux-
При пускане на make CROSS=blah резултатът пак е:
CROSS=sh4-linux-

/CROSS се сетва два пъти, защото $(MAKE) е еквивалента на това,
което е изпълнено като "make xxxxxx" и разбира се се получава
make CROSS=blah --no-print-directory -f Makefile2 CROSS=sh4-linux-/

Искам да мога при дадените Makefile's да изпълня make CROSS=blah
и вторият Makefile да получи CROSS=blah променлива. Ефективно да
мога да override-на променливите които задавам на командният ред
при викането make.

Идеи?

[1]: Makefile
-----cut-----
all: test
test:
@$(MAKE) --no-print-directory -f Makefile2 CROSS=sh4-linux-
-----cut-----

[2]: Makefile2
-----cut-----
all: show
show:
@echo CROSS=$(CROSS)
-----cut-----



За припокриване на макросите, наречени променливи в документацията на ГНУ make, може да се използва следното:

================================
all: test

CROSS?=sh4-linux-

test:
        $(MAKE) -f Makefile2 CROSS=$(CROSS)
================================

Номера би трябвало да мине и на позабравени ОС с малка промяна $(MAKE) -e ....

Ако има притеснения от макрос във вида CROSS?=sh4-linux-, то става и така:
================================
all: test

CROSS=sh4-linux-

test:
        $(MAKE) -f Makefile2 CROSS=$${CROSS-$(CROSS)}
================================

Примера отново е без -е флаг, защото на почти неизползвани ОС може да се ползва и така:
        CROSS=$${CROSS-$(CROSS)} \
        $(MAKE) -f Makefile2 CROSS=$${CROSS-$(CROSS)}

Горните примери работят и с CROSS=нещоси make, което не сработва при правило от вида $(MAKE) ..... $(MAKEFLAGS)

Румен



_______________________________________________
Lug-bg mailing list
[email protected]
http://linux-bulgaria.org/mailman/listinfo/lug-bg

Reply via email to