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

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

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

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

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

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

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

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

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

Programowanie Proceduralne

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

Programy użytkowe (utilities)

Programowanie niskopoziomowe

Tworzenie oprogramowania

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

Fragment wykładu z języka C ( )

Automatyzacja kompilacji. Automatyzacja kompilacji 1/40

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

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24

Programowanie w języku Python. Grażyna Koba

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32

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

WPROWADZENIE DO INFORMATYKI

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

Wprowadzenie do biblioteki klas C++

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

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

Laboratorium 1. I. Zainstaluj program Eclipse (wersja C/C++ w odpowiednim systemie operacyjnym

Programowanie Systemów Czasu Rzeczywistego

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

Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051

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!

Programy pomocnicze: diff, make, systemy rcs i cvs, debugger. Zarządzanie wersjami.

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

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

Automatyzacja kompilacji. Automatyzacja kompilacji 1/28

Zadanie programistyczne nr 3 z Sieci komputerowych

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

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

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

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

Konsolidacja (linking)

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

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

Paradygmaty programowania

Technika mikroprocesorowa. Struktura programu użytkownika w systemie mikroprocesorowym

SAS Institute TECHNICAL SUPPORT )

Zadanie 2: Arytmetyka symboli

Schemat konstrukcja pliku Makefile

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Systemy Operacyjne. Ćwiczenia

Zadania autora i administratora według IBM Lotus LMS

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

Delphi podstawy programowania. Środowisko Delphi

Lekcja 5 - PROGRAMOWANIE NOWICJUSZ

Pracownia komputerowa. Dariusz wardecki, wyk II

Ćwiczenie 6. Wiadomości ogólne.

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Tworzenie oprogramowania

Programowanie w asemblerze Linkowanie

Instrukcja laboratoryjna cz.0

Programowanie Systemów Wbudowanych

Wstęp do programowania. Wykład 1

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Zad. 5: Układ równań liniowych liczb zespolonych

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

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

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA: 4 ŚRODKI DYDAKTYCZNE:

Podział programu na moduły

Podstawy Programowania.

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Wykład 4. Środowisko programistyczne

Archiwum DG 2016 PL-SOFT

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Programowanie Komputerów 2FD. Materiały pomocnicze do laboratorium

Map Reduce Wprowadzenie do Apache Hadoop

Kl 7-8 Szkoła Podstawowa

Podstawy JavaScript ćwiczenia

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Podstawy Programowania

Statyczne i dynamiczne predykaty

Skróty sieciowe. Krishna Tateneni Yves Arrouye Polskie tłumaczenie: Suse Polska Aktualny opiekun tłumaczenia: Marcin Kocur

System magazynowy małego sklepu.

INSTALACJA OPROGRAMOWANIA

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Programowanie Obiektowe i C++

Transkrypt:

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

Makefiles K.Grzelak (Wykład 10) Programowanie w C++ 2 / 21

Kompilacja programu zapisanego w kilku plikach Gdy program złożony z niewielkiej liczby plików: g++ -o prog prog.cc Wektor2D.cc Gdy więcej plików (Linux): Program make/gmake Proces kompilacji, linkowania... zapisany w pliku Makefile K.Grzelak (Wykład 10) Programowanie w C++ 3 / 21

Makefiles Proces kompilacji zapisany w tekstowym pliku (Makefile) Podstawa: Przyporzadkowanie krótkich nazw celów(targets) do rzadanej akcji. K.Grzelak (Wykład 10) Programowanie w C++ 4 / 21

Makefiles Zalety: Cała informacja o procesie przetwarzania plików źródłowych na końcowy program w jednym miejscu. Można łatwo wybrać poszczególne elementy tego procesu. Kompilacja (automatycznie) tylko tych plików, w których były zmiany. K.Grzelak (Wykład 10) Programowanie w C++ 5 / 21

Przypomnienie - od kodu źródłowego do kodu maszynowego w C++ Source File Source File Preprocessor Preprocessor Processed Code Processed Code Compiler Compiler Object File Object File Linker Executable Libraries OS Program in Memory Po etapie kompilacji pliki z rozszerzeniem.o (object files ). K.Grzelak (Wykład 10) Programowanie w C++ 6 / 21

Makefiles Uruchomienie make albo Przykład dla celu clean make clean Jeśli nie podana nazwa pliku, to automatycznie uruchamiany plik o nazwie Makefile lub makefile K.Grzelak (Wykład 10) Programowanie w C++ 7 / 21

Makefiles Opcje polecenia make: Opcja Przykład użycia -f make -f plik -n make -n Opcja -f jesli plik Makefile nazywa się plik. Opcja -n jeśli chcemy zobaczyć jakie polecenia zostana uruchomione (bez ich uruchamiania). K.Grzelak (Wykład 10) Programowanie w C++ 8 / 21

Struktura pliku Makefile Najważniejsza część pliku Makefile to definicje celów: cel: [zależności] polecenie Każde polecenie musi być poprzedzone tabulatorem!!!!! make clean oznacza że zostanie uruchomione polecenie, które znajduje się za celem clean Komentarze zaczynaja się od znaku # K.Grzelak (Wykład 10) Programowanie w C++ 9 / 21

Struktura pliku Makefile Przykład clean: rm -f *.o * Pliki które chcemy usunać moga nie istnieć. Jeżeli chcemy żeby sytuacja tego typu nie generowała błędu, to dodajemy minus przed poleceniem, np.: Przykład clean: -rm -f *.o * K.Grzelak (Wykład 10) Programowanie w C++ 10 / 21

Struktura pliku Makefile Przykład pliku Makefile do kompilacji pojedynczego pliku wskazniki: wskazniki.cc g++ -o wskazniki wskazniki.cc Po prawej stronie dwukropka lista plików lub celów od których zależy cel po lewej stronie dwukropka. Polecenie nie będzie uruchomione jeśli cel został stworzony później niż pliki z listy zależności. K.Grzelak (Wykład 10) Programowanie w C++ 11 / 21

Działanie Makefile Polecenia nie sa wykonywane w takiej kolejności, w jakiej sa zapisane w pliku. K.Grzelak (Wykład 10) Programowanie w C++ 12 / 21

Struktura pliku Makefile Rozdzielenie procesu kompilacji i linkowania: Przykład wskazniki: wskazniki.o g++ -o wskazniki wskazniki.o wskazniki.o: wskazniki.cc g++ -c wskazniki.cc Jeżeli plików jest więcej nie trzeba za każdym razem kompilować wszystkiego. K.Grzelak (Wykład 10) Programowanie w C++ 13 / 21

Struktura pliku Makefile Celów w Makefile może być dużo. Po napisaniu make bez nazwy celu wykonywany jest pierwszy z nich. Przykład wskazniki: wskazniki.o g++ -o wskazniki wskazniki.o wskazniki.o: wskazniki.cc g++ -c wskazniki.cc prep: g++ -E wskazniki.cc clean: -rm -f * *.o wskazniki K.Grzelak (Wykład 10) Programowanie w C++ 14 / 21

Struktura pliku Makefile Definicje Przykłady CXX=g++ -std=c++11 PROG = wskazniki.cc Odwoływanie się do zdefiniowanych wcześniej nazw: $(CXX) $(PROG) K.Grzelak (Wykład 10) Programowanie w C++ 15 / 21

Kompilacja programu złożonego z kilku plików Przykład dla klasy Wektor2D z poprzedniego wykładu prog: Wektor2D.o prog.o g++ -o prog Wektor2D.o prog.o Wektor2D.o: Wektor2D.cc Wektor2D.h g++ -c Wektor2D.cc prog.o: prog.cc Wektor2D.h g++ -c prog.cc K.Grzelak (Wykład 10) Programowanie w C++ 16 / 21

Kompilacja programu złożonego z kilku plików Ważne Pliki nagłówkowe musza być na liście zależności. K.Grzelak (Wykład 10) Programowanie w C++ 17 / 21

Struktura pliku Makefile Niektóre uzywane skróty: $@ cel (to co przed dwukropkiem) $ˆ zależności (to co za dwukropkiem) $< pierwszy element z listy za dwukropkiem %.o:%.cc stworzenie plików.o ze wszystkich dostępnych plików.cc bez konieczności definiowania konkretnych nazw K.Grzelak (Wykład 10) Programowanie w C++ 18 / 21

Kompilacja programu złożonego z kilku plików Przykład dla klasy Wektor2D z poprzedniego wykładu: prog: Wektor2D.o prog.o g++ -o $@ $ˆ Wektor2D.o: Wektor2D.cc Wektor2D.h g++ -c $< prog.o: prog.cc Wektor2D.h g++ -c $< K.Grzelak (Wykład 10) Programowanie w C++ 19 / 21

Kompilacja programu złożonego z kilku plików Przykład dla klasy Wektor2D z poprzedniego wykładu: prog: Wektor2D.o prog.o g++ -o $@ $ˆ %.o:%.cc Wektor2D.h g++ -c $< K.Grzelak (Wykład 10) Programowanie w C++ 20 / 21

Kompilacja programu złożonego z kilku plików Przykład dla klasy Wektor2D z poprzedniego wykładu: OBJS=Wektor2D.o prog.o prog: $(OBJS) g++ -o $@ $ˆ %.o:%.cc Wektor2D.h g++ -c $< K.Grzelak (Wykład 10) Programowanie w C++ 21 / 21