Makefile Flashcards
(25 cards)
Wskaż w poniższym listingu wartość zmiennej automatycznej $@
fb1-5: fb1-5.l fb1-5.y
bison -d fb1-5.y
flex fb1-5.l
cc -o $@ fb1-5.tab.c lex.yy.c -lfl
fb1-5 <- cel jest wartością zmiennej automatycznej $@
Z jakich sekcji zbudowany jest plik Makefile?
cel: warunki wstępne …
recepta …
…
Jakiej klasy obiektami są warunki wstępne?
Są to pliki wejsciowe do reguł, muszą być zbudowane przez make lub istnieć
Czy przed każdą receptą należy postawić znak tabulatora?
Tak, chociaż dozwolone jest ustawienie zmiennej .RECIPEPREFIX na dowolny znak
Czy wymagania wstępne są wymagane do poprawnego działania reguły?
Nie są wymagane
Co zrobi make jeżeli celem jest plik a zmieni się któryś z warunków wstępnych?
Przekompiluje lub zlinkuje ponownie ten cel
Która reguła zostanie wybrana jako pierwsza jeżeli make nie przyjmie parametrów?
Pierwsza reguła z listy, włączając wszystkie pliki/reguły wejściowe
Czy akcje powinny zawierać odwałania do innych akcji?
Nie powinny
Czy akcje powinny być używane w warunkach wstępnych w innych regułach?
Nie powinny, np. usuwanie plików powinno być wykonane, jako , że inne cele których warunkami wstępnymi są pliki mogą działać błędnie.
Czym rózni się reguła akcji od reguły która buduje pliki?
W akcji nie podaje się warunków wstępych
Jak z angielskiego nazywa się reguły, które nie odwołują się do plików - czyli akcje?
Phony targets
Czym są zmienne w plikach makefile?
Są to napisy zdefiniowane raz, a następnie podstawiane wielokrotnie w regułach.
W jakim celu stosować zmienne?
W celu uniknięcia błędów związanych z powieleniami.
W jaki sposób zdefiniować zmienną?
zmienna = napis definiujący zmienną
Do czego używany jest przełącznik -c w komendzie cc?
Do kompilacji ale pominięcia fazy linkowania.
Jakie rozszerzenie przyjmują zasembolowane lub skompilowane pliki?
.o
Do czego używany jest przełącznik -S w komendzie cc?
Do kompilacji do kodu maszynowego.
Jakie rozszerzenie przyjmują skompilowane pawidłowo pliki z opcją -S?
.s
Do jakiego kompilatora zlinkowane jest polecenie cc?
Do GNU C Compiler, czyli gcc
W jaki sposób można użyć zmiennej?
Umieszczając ja pomiędzy napisem “${“ a znakiem “}”, np. ${obiekty}
Rozwiń domniemaną regułe dla plików .o -> main.o : defs.h
cc -c main.c defs.h -o main.o
Czy można podać więcej niż jeden cel w regule?
Można, często przy akompaniamencie reguł domniemanych.
Czy można grupować wpisy po wymaganiach wstępnych, a nie po celach?
Tak, np. kbd.o command.o files.o : command.h -> wykorzysta domniemaną regułę .o do kompilacji każdego celu osobno, tj.
kbd. o : command.h
command. o : command.h
files. o : command.h
A te domniemane reguły zostaną odpowiednio rozwinięte
W jaki sposób zareaguje make na poniższą regułę
clean:
rm edit $(objects)
W momencie, kiedy plik clean istnieje w katalogu źródłowym?
Potraktuje ten cel jako próbę stworzenia pliku clean, a nie jak w zamierzeniu akcję