Większość aplikacji linuxowych jest kompilowana z:
make
make install clean
Tak jak to zrozumiałem, make przyjmuje jako argumenty nazwy celów kompilacji. Więc install
jest celem, który kopiuje niektóre pliki, a następnie clean
jest celem, który usuwa pliki tymczasowe.
Ale jaki cel make
zbuduje, jeśli nie zostaną określone argumenty (np. Pierwsze polecenie w moim przykładzie)?
all
to tylko konwencja.make install
in sudo, a nie całą kompilację.include
jest kolejnym plikiem makefile, którego pierwszym celem jest%.o : %.cpp
. Więc domyślnym celem jest ... zbudowanie wszystkich plików .cpp?Oto krótka odpowiedź, aby zaoszczędzić innym kilka sekund i aby nie musieli czytać instrukcji. Dodaj to na górze pliku make:
mytarget będzie teraz celem, który zostanie uruchomiony, jeśli zostanie wykonane polecenie „make” i nie zostanie określony żaden cel.
Jeśli masz starszą wersję marki (<= 3,80), to nie zadziała. Jeśli tak jest, możesz zrobić to, o czym wspomina anon, po prostu dodaj to na górze pliku make:
Odnośniki: https://www.gnu.org/software/make/manual/html_node/How-Make-Works.html
źródło
GNU Make pozwala także określić domyślny cel make za pomocą specjalnej zmiennej o nazwie
.DEFAULT_GOAL
. Możesz nawet rozbroić tę zmienną w środku pliku Makefile, dzięki czemu następny cel w pliku stanie się domyślnym celem.Ref: Podręcznik Gnu Make - zmienne specjalne
źródło