Marka: rule call rule
W pliku makefile, Czy Mogę wywołać regułę z innej reguły?
Podobne do:
rule1:
echo "bye"
rule2:
date
rule3:
@echo "hello"
rule1
4 answers
Albo używaj zależności, albo rekurencyjnie łącz się z jedną regułą do drugiej.
Zależności byłyby zrobione w ten sposób (choć kolejność będzie inna):
rule1:
echo "bye"
rule2:
date
rule3: rule1
@echo "hello"
Wykonanie rekurencyjne byłoby wykonane w ten sposób (choć wiąże się to z podprocesem):
rule1:
echo "bye"
rule2:
date
rule3:
@echo "hello"
$(MAKE) rule1
Żaden z nich nie jest doskonały; w rzeczywistości, dzięki rekurencyjnemu make możesz mieć poważne problemy, jeśli zbudujesz pętlę. Prawdopodobnie powinieneś również dodać .PHONY
regułę, aby oznaczyć te zasady powyżej jako syntetyczne, tak aby stray rule1
(itd.) w katalogu nie spowoduje zamieszania.
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-12-27 16:18:38
Pliki Makefile nie są proceduralne; "reguły" nie są podobne do funkcji. To powiedziawszy, możesz określić, że jedna reguła jest warunkiem wstępnym innej:
rule1:
@echo "Rule 1"
rule2: rule1
@echo "Rule 2"
Jeśli to zrobisz make rule2
, powinieneś zobaczyć:
Rule 1
Rule 2
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-12-27 16:12:28
Po prostu dodaj nową regułę z zamówieniem, które chcesz..
rule1:
echo "bye"
rule2:
date
rule3:
@echo "hello"
rule4: rule3 rule1
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
2016-11-09 19:31:42
W GNU Make są dwie zaawansowane funkcje, które mogą to zrobić, chociaż powinna być używana tylko w okolicznościach łagodzących. To tak jest Najwyżej oceniane w google.
Zasady wstępne są bardziej zalecane, ale czasami trzeba Post-wymagane.
Zasadniczo Eval pozwala na budowanie celów w locie, a Call pozwala na tworzenie funkcji typu "defines".
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
2015-10-29 15:42:07