Muszę więc upewnić się, że jeśli kompiluję krzyżowo dla określonego obiektu docelowego, dla którego ustawiona jest zmienna powłoki. Jeśli zmienna nie jest ustawiona, make powinna wyświetlić komunikat, a następnie wyjść.Wyjście z pliku make, jeśli stan dwóch zmiennych powłoki jest określonym stanem.
Mam następującą regułę w moim Makefile:
.PHONY: checksource
all: checksource default
checksource:
$(if $(and $(ifeq ($(CROSS_COMPILE), whatever)), $(ifeq ($(VARIABLE),))), \
($(shell echo "Error! VARIABLE not defined!") \
$(shell exit 2)))
Jeśli $CROSS_COMPILE
jest ustawiony na cokolwiek:
$> echo $CROSS_COMPILE
whatever
$>
i $ zmienna nie jest zdefiniowana:
$> echo $VARIABLE
$>
Czyni nie wychodzić z marki i budowany jest domyślny cel. Okay Wiem, że mogłem po prostu użyć zagnieżdżonego ifeq
, aby to zrobić, ale chcę sprawić, że będzie ładny (i dowiedzieć się nieco więcej o plikach Makefile).