Makefile If-Then Else i pętle
Czy ktoś może wyjaśnić jak używać poleceń if-then I pętli for w plikach Makefiles? Nie mogę znaleźć dobrej dokumentacji z przykładami.
4 answers
Formularze Warunkowe
Proste
conditional-directive
text-if-true
endif
Umiarkowanie Złożone
conditional-directive
text-if-true
else
text-if-false
endif
Bardziej Złożone
conditional-directive
text-if-one-is-true
else
conditional-directive
text-if-true
else
text-if-false
endif
endif
Dyrektywy Warunkowe
If Equal Syntax
ifeq (arg1, arg2)
ifeq 'arg1' 'arg2'
ifeq "arg1" "arg2"
ifeq "arg1" 'arg2'
ifeq 'arg1' "arg2"
Jeśli Nie Równa Składnia
ifneq (arg1, arg2)
ifneq 'arg1' 'arg2'
ifneq "arg1" "arg2"
ifneq "arg1" 'arg2'
ifneq 'arg1' "arg2"
Jeśli Zdefiniowana Składnia
ifdef variable-name
Jeśli Nie Zdefiniowano Składni
ifndef variable-name
Funkcja Foreach
Składnia Funkcji Foreach
$(foreach var, list, text)
Foreach Semantyka
Dla każdej białej spacji oddzielone słowo w "list", zmienna nazwana przez " var " jest ustawiona na to słowo i tekst jest wykonywany.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-07 09:44:44
Oto przykład, jeśli:
ifeq ($(strip $(OS)),Linux)
PYTHON = /usr/bin/python
FIND = /usr/bin/find
endif
Zauważ, że jest to słowo ostrzeżenia, że różne wersje Make mają nieco inną składnię, z których żadna nie wydaje się być dobrze udokumentowana.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-07 23:02:19
Czy próbowałeś GNU make documentation ? Zawiera całą sekcję o uwarunkowaniach z przykładami.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-07 22:59:57
Często widzisz pętle, ale zazwyczaj nie są one potrzebne. Oto przykład jak można wykonać pętlę for bez uciekania się do powłoki
LIST_OF_THINGS_TO_DO = do_this do_that
$(LIST_OF_THINGS_TO_DO):
run $@ > [email protected]
SUBDIRS = snafu fubar
$(SUBDIRS):
cd $@ && $(MAKE)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-05 05:36:30