Make jest programem komputerowym automatyzującym proces kompilacji programów, na które składa się wiele zależnych od siebie plików.

Podobne dokumenty
Programowanie w C++ Wykład 10. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 10) Programowanie w C++ 1 / 21

Automatyzacja kompilacji. Automatyzacja kompilacji 1/28

Kompilacja i scalanie programów w linii poleceń gcc i make

Programowanie Proceduralne

Programy użytkowe (utilities)

Automatyzacja kompilacji. Automatyzacja kompilacji 1/40

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Laboratorium 2: Biblioteki statyczne i dynamiczne w języku C. mgr inż. Arkadiusz Chrobot

Fragment wykładu z języka C ( )

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Praktyka programowania projekt

Podstawy programowania. Wykład 9 Preprocesor i modularna struktura programów. Krzysztof Banaś Podstawy programowania 1

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

MentorGraphics ModelSim

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Tworzenie oprogramowania

Delphi podstawy programowania. Środowisko Delphi

Wykład 8: klasy cz. 4

Programowanie niskopoziomowe

Pakiety i interfejsy. Tomasz Borzyszkowski

Wstęp do Informatyki dla bioinformatyków

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Rozdział 5: Style tekstu

KONSTRUKCJA KOMPILATORÓW

Wprowadzenie do biblioteki klas C++

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Podstawy programowania skrót z wykładów:

Funkcja pierwotna, całka oznaczona na podstawie funkcji pierwotnej

Tworzenie oprogramowania

1 Przygotował: mgr inż. Maciej Lasota

Przedstawię teraz tzw. podstawowe symbole wyrażenia regularne (BRE, Basic Regular Expression)

Lifehacking dla R. Przemyślenia i rozwiązania w temacie reprodukowalności analiz i organizacji pracy

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Wstęp do programowania. Wykład 1

Języki programowania zasady ich tworzenia

Programowanie współbieżne... (10) Andrzej Baran 2010/11

Programowanie w języku Python. Grażyna Koba

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Wstęp do Programowania, laboratorium 02

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wstęp do programowania

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Wstęp do systemów wielozadaniowych laboratorium 03 Praca w powłoce UNIX-owej

Systemy Operacyjne. Ćwiczenia

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Programowanie w języku C++ Grażyna Koba

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

CODE::BLOCKS & VALGRIND OPRACOWAŁ MICHAŁ BETHKE

R o g e r A c c e s s C o n t r o l S y s t e m 5

Zbuduj mi ten projekt, prosz.

Wykład 3 Składnia języka C# (cz. 2)

Wstęp. Opis programu :

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Podstawy Programowania 2

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Podstawy Programowania.

Wykład 9: Polimorfizm i klasy wirtualne

Zakład Systemów Rozproszonych

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Plan wykładów. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 1. Konkurs programistyczny. Literatura. Dr inż. Tomasz Olas

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

WPROWADZENIE DO INFORMATYKI

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Projekt 4: Programowanie w logice

Numeracja dla rejestrów zewnętrznych

Rozdział 4 KLASY, OBIEKTY, METODY

Programowanie Obiektowe i C++

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

OGÓLNE WYMAGANIA DOTYCZĄCE SPOSOBU PRZYGOTOWANIA PRAC DYPLOMOWYCH (wytyczne dla Studentów)

1. INWENTARYZACJA Wstęp. Ścieżka dostępu do modułu: Środki trwałe [I]nwentaryzacja

Biuletyn informacyjny WeriOn. 3/2015 Instrukcja konfiguracji połączenia z programem Subiekt GT r.

Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu Unix

Wykład 4. Środowisko programistyczne

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Programowanie obiektowe

L E X. Generator analizatorów leksykalnych

Zadanie programistyczne nr 3 z Sieci komputerowych

Pracownia Komputerowa wykład III

Backend Administratora

Advance Concrete 8.1 SP1 Opis zawartości

Wykład 5: Klasy cz. 3

Programowanie w asemblerze Linkowanie

Tablice (jedno i wielowymiarowe), łańcuchy znaków

MATLAB tworzenie własnych funkcji

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

Transkrypt:

Spis treści 1 Krótkie wprowadzenie do makefile'a 1.1 Typowa reguła programu make 1.2 Zmienne w pliku Makefile 1.3 Zmienne standardowe 1.4 Zmienne automatyczne 1.5 Więcej o regułach 1.5.1 Reguły z wzorcem 1.5.2 Reguły domyślne 1.5.3 Reguła clean 1.5.4 Więcej plików wynikowych 1.5.5 Reguła.PHONY Krótkie wprowadzenie do makefile'a Manual Make jest programem komputerowym automatyzującym proces kompilacji programów, na które składa się wiele zależnych od siebie plików. Program przetwarza plik reguł Makefile i na tej podstawie stwierdza, które pliki źródłowe wymagają kompilacji. Oszczędza to wiele czasu przy tworzeniu programu, ponieważ w wyniku zmiany pliku źródłowego kompilowane są tylko te pliki, które są zależne od tego pliku. Dzięki temu nie ma potrzeby kompilacji całego projektu. Make nadaje się również do innych prac, które wymagają przetwarzania wielu plików zależnych od siebie. Program został pierwotnie stworzony przez dr. Stuarta I. Feldmana w 1977 roku, który pracował w owym czasie w Bell Labs. Istnieje kilka wersji make jak np.: BSD make GNU make Microsoft make Borland make W make # zamienia tekst w komentarze. Typowa reguła programu make składnia cel:składniki

komenda Uwaga: wcięcia robimy tabulatorem (inaczej się nie uda). Na końcu makefile'a musi być znak przejścia do nowej linii. Przykładowa reguła: hello: hello.cc pisz.cc g++ hello.cc pisz.cc -o hello Reguła ta określa sposób tworzenia pliku wykonywalnego hello z plików hello.cc i pisz.cc. Więcej reguł: hellobis: hellobis.o pisz.o gcc hellobis.o pisz.o -o hellobis gcc -c hellobis.cc -o hellobis.o pisz.o: pisz.c gcc -c pisz.cc -o pisz.o W tym wypadku głównym plikiem docelowym jest plik hellobis. Jego składniki to pliki hellobis.o i pisz.o. Make szuka tych plików w katalogu bieżącym, jeśli jednak ich nie znajdzie to szuka reguł, które podają sposób w jaki te pliki utworzyć. W powyższym przykładzie są to dwie kolejne reguły. Make korzysta z nich, żeby utworzyć składniki reguły głównej i dopiero wtedy może utworzyć główny plik docelowy hellobis Zmienne w pliku Makefile W pliku Makefile można definiować zmienne, tak jak w poniższym przykładzie: g++ $(OBJS) -o hellobis g++ -c hellobis.cc -o hellobis.o pisz.o: pisz.cc g++ -c pisz.cc -o pisz.o

W tym przykładzie zdefiniowana została zmienna o nazwie OBJS i nadana jej została wartość 'hellobis.o pisz.o'. Odwołanie do zdefiniowanej zmiennej odbywa się przy pomocy znaku dolara i nawiasów okrągłych. W tym przypadku raz zdefiniowana zmienna została użyta dwukrotnie. Jeśli będziemy chcieli dodać coś do listy składników pliku hellobis to dzięki użyciu zmiennej wystarczy to zrobić raz - w definicji zmiennej OBJS. Zmienne standardowe W Makefile można używać wielu zmiennych zdefiniowanych standardowo. Najczęściej używane zmienne standardowe: 1. 2. 3. 4. 5. CC nazwa kompilatora języka C CXX nazwa kompilatora języka C++ CFLAGS opcje kompilatora języka C CXXFLAGS opcje kompilatora języka C LFLAGS opcje dla linkera Zmienne standardowe mają pewną predefiniowaną wartość (np. zmienna CC ma predefiniowaną wartość 'cc'), którą jednak można zmieniać. Oto przykład: $(CXX) $(LFLAGS) $(OBJS) -o hellobis $(CXX) $(CXXFLAGS) -c hellobis.cc -o hellobis.o pisz.o: pisz.cc $(CXX) $(CXXFLAGS) -c pisz.cc -o pisz.o Zmienne automatyczne Zmienne automatyczne są to specjalne zmienne, które przechowują wartości zmieniające się dynamicznie w trakcie wykonywania Makefile'a, np. nazwa pliku docelowego aktualnie przetwarzanej reguły. Najczęściej używane zmienne automatyczne: 1. 2. 3. < aktualnie przetwarzany plik z listy składników (patrz przykład) @ nazwa pliku docelowego ^ składniki

$(CXX) $(CXXFLAGS) -c $< -o $@ pisz.o: pisz.cc $(CXX) $(CXXFLAGS) -c $< -o $@ Więcej o regułach Reguły z wzorcem $(OBJS):%.o:%.cc $(CXX) -c $(CXXFLAGS) $< -o $@ Reguły domyślne Make posiada pewne standardowe reguły do tworzenia pewnych typów plików. W poniższym przykładzie pominięto regułę tworzenia plików '.o' z plików '.c'. Make posiada jednak standardowe, domyślne reguły tworzenia plików.o. W tym przypadku make odnajdzie w katalogu bieżącym pliki '.c', z których utworzy pliki '.o' przy pomocy polecenia '$(CXX) -c'.] Reguła clean Każdy dobry plik makefile powinien posiadać regułę, która usuwa pliki pośrednie, tymczasowe, etc. powstałe podczas kompilacji. W powyższych przykładach plikami pośrednimi są pliki '.o'. Powszechnie przyjęło się, że taka reguła ma nazwę 'clean'. Oto przykład:

clean: rm -f *.o Zauważmy, że reguła clean ma pustą listę składników. Aby wywołać regułę clean używamy polecenia make clean. Więcej plików wynikowych all: prog1 prog2 prog1: prog1.c $(CXX) $(CXXFLAGS) $(LFLAGS) prog1.cc -o prog1 prog2: prog2.c $(CXX) $(CXXFLAGS) $(LFLAGS) prog2.cc -o prog2 clean: rm -f prog1.o prog2.o Reguła.PHONY Reguły clean i all są regułami specjalnymi w tym sensie, że clean i all nie są nazwami plików. Gdyby jednak zdarzyło się, że w katalogu bieżącym istnieje plik o nazwie all lub clean to reguły te mogłyby nie działać! Aby temu zapobiec trzeba by poinstruować make'a, że all i clean nie są nazwami plików. Do tego celu służy specjalna reguła o nazwie.phony. all: prog1 prog2 prog1: prog1.c $(CXX) $(CXXFLAGS) $(LFLAGS) prog1.cc -o prog1 prog2: prog2.c $(CXX) $(CXXFLAGS) $(LFLAGS) prog2.cc -o prog2

clean: rm -f prog1.o prog2.o.phony: all clean