Szoftver technológia. Build systems. Cserép Máté ELTE Informatikai Kar 2019.

Hasonló dokumentumok
Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS. Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

Mobil Informatikai Rendszerek

Kiszolgálók üzemeltetése. Iványi Péter

Szoftver technológia. Continuous integration & delivery. Cserép Máté ELTE Informatikai Kar 2019.

Mobil Informatikai Rendszerek

C++ fejlesztés az ECLIPSE környezetben

Több platform egy kódbázis Tanulságok a Tresorittól. Budai Péter, vezető fejlesztő

A Microsoft Visual Studio 2005 fejlesztőkörnyezet

GPU Lab. 5. fejezet. A C++ fordítási modellje. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Programozási technológia 2.

Vizuális, eseményvezérelt programozás XI.

Java I. A Java programozási nyelv

Bevezetés a Programozásba II 4. előadás. Adattípusok hordozhatósága

.NET Microsoft.Net Framework

Automatizált Java Build. ApacheAnt használatával

Elemi alkalmazások fejlesztése I.

A L i n u x r u h á j a

Mobil készülékek programozása

Nokia N9 - MeeGo Harmattan bemutatkozik

A DevOps-kultúra eszközei

Webes alkalmazások fejlesztése

Hardver modellezés SystemC-vel és SDL grafikus könyvtárral Visual Stúdió alatt

Clang Static Analyzer belülről

Bevezetés. Kiknek szól a könyv?

A Java EE 5 plattform

Kommunikációs rendszerek teljesítőképesség-vizsgálata

Kedvenc Ingyenes editorok avagy milyen a programozó jobbkeze? PSPAD editor DEVPHP IDE

Az MTA Cloud a tudományos alkalmazások támogatására. Kacsuk Péter MTA SZTAKI

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

Szoftver technológia. Projektmenedzsment eszközök. Cserép Máté ELTE Informatikai Kar 2019.

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

Bevezetés a programozásba Előadás: Fordítási egység

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.

Programozás I. gyakorlat

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

Dr. Schuster György október 14.

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

Útmutató az OKM 2007 FIT-jelentés telepítéséhez

Java Programozó képzés A&K AKADÉMIA 2019.

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

Viczián István IP Systems JUM XIX szeptember 18.

Kinek szól a könyv? Hogyan épül fel a könyv? Megjelenés előtti szoftver A hálózati kézikönyv tartalma A könyv támogatása Kérdések és megjegyzések

Models are not right or wrong; they are more or less useful.

A.NET keretrendszer (.NET Framework) három alapvetõ összetevõbõl áll:

4. Laborgyakorlat. A fájlokról ezeket az adatokat, a fájlrendszer tárolja. Számunkra az 1, 3, 4. oszlopok lesznek az érdekesek.

Nyílt forráskódú irodai programkomponensek vállalati környezetbe való integrációjának vizsgálata és implementációja

Miről lesz szó? Setup Project készítése. Tulajdonságok. 1. Készítsünk egy setup project alkalmazást egy már elkészített, lefordított programhoz.

Könyvtári címkéző munkahely

Java I. A Java programozási nyelv

Szoftverminőségbiztosítás

OOP és UML Áttekintés

6.2. TMS320C64x és TMS320C67xx DSP használata

Fejlesztési tapasztalatok multifunkciós tananyagok előállításával kapcsolatban Nagy Sándor

Közösség, projektek, IDE

Programozás I. 1. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Távközlési és Médiainformatikai Tanszék Hálózatok és szolgáltatások szakirány. Szolgáltatások és alkalmazások. Apple App Store. Sándor Roland Martin

.NET (Dot-NET) #1 (Bevezetés)

RIA Rich Internet Application

A szoftverfejlesztés eszközei

I. Bevezetés. 1. ábra A Java "logója"

Image Processor BarCode Service. Felhasználói és üzemeltetői kézikönyv

Dr. Schuster György október 30.

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Innovation Delivered. Szekeres Csaba. M-Prospect Kft. Fordítási és tolmácsolási üzletágvezető, SDL Trados partner

Bevezetés, platformok. Léczfalvy Ádám

Bevezetés a Python programozási nyelvbe

Játékfejlesztés a Windows Phone 7 erejével

Programzás I gyakorlat

Intervenciós röntgen berendezés teljesítményszabályozójának automatizált tesztelése

Tesztelés és hibajavítás Microsoft Visual Studio 2005 fejlesztőkörnyezetben

George Shepherd. 1. A webes alkalmazások alapjai 1

Egy egyszerű, gyors és szabad újratelepítő eszköz: upi

1_Linux_bevezeto_bash

1. Bevezető. 2. Sérülékenységek

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Csomagkezelés haladó. Bakai Dániel, volt reszortvezető

Interaktív, grafikus környezet. Magasszintû alkalmazási nyelv (KAL) Integrált grafikus interface könyvtár. Intelligens kapcsolat más szoftverekkel

A NetBeans IDE Ubuntu Linux operációs rendszeren

Verifikáció és validáció Általános bevezető

A cloud szolgáltatási modell a közigazgatásban

Webes alkalmazások fejlesztése. Bevezetés az ASP.NET MVC 5 keretrendszerbe

iphone és Android két jó barát...

!!" KÉSZÍTK: ERDÉLYI LAJOS KOLLÁR NÁNDOR WD6OGW BUK8Y7

Iman 3.0 szoftverdokumentáció

Új komponens a Talend Palettán: Starschema SAP Connector. Csillag Péter, Földi Tamás Starschema Kft.

FELÜLVIZSGÁLATI JEGYZŐKÖNYV (E-DS10F1_TANF-SW) MELLÉKLETE

Programozási nyelvek JAVA EA+GY 1. gyakolat

BMD Rendszerkövetelmények

UMN Mapserver és a Grass használata a Geológiában. Soós Dániel, Phd. Hallgató Miskolci Egyetem Geodéziai és Bányaméréstani Intézeti Tanszék

JAVA webes alkalmazások

Integrációs mellékhatások és gyógymódok a felhőben. Géczy Viktor Üzletfejlesztési igazgató

A Debian, mint Desktop Operációs Rendszer

Flex: csak rugalmasan!

RapidMiner telepítés i. RapidMiner telepítés

Crossplatform mobil fejlesztőkörnyezet kiválasztását támogató kutatás

Adatbázis és szoftverfejlesztés elmélet

Rational. Application Developer. Telepítési kézikönyv. 7.0 változat GI

Átírás:

Szoftver technológia Cserép Máté ELTE Informatikai Kar 2019.

C++ programok fordítása g++ -c -o foo.o foo.cpp \ -O2 -std=c++11 -pedantic I./include/... további fordítási egységek... g++ -c -o main.o main.cpp \ -O2 -std=c++11 -pedantic -I./include/ g++ -o program.exe foo.o... main.o A programok manuális fordítása már kisebb programoknál is könnyen nehezen kezelhetővé válik. Nagyobb programoknál nem követhető mely fordítási egységek újrafordítása szükséges. 2

Fordító eszközök kategorizálása Önálló (standalone) Make, NMake, Scons, Jom, BJam, Ninja Fejlesztő környezetebe integrált (integrated) Visual Studio, Xcode, Eclipse Generátorok (generators) CMake, Autotools, GYP 3

Make GNU Make https://www.gnu.org/software/make/ A fordítást célokon (target) és szabályokon (rule) keresztül definiáljuk. A szabályok függőségeket (dependency) és utasításokat (command) tartalmazhatnak. A szabályrendszert az ún. Makefile tartalmazza. Futtatás: make vagy make -f MyMakefile Példa Makefile: program: foo.cpp main.cpp g++ -o program foo.cpp main.cpp std=c++11 4

Make Változók használata: CXX=g++ CFLAGS= std=c++11 -pedantic program: foo.cpp main.cpp $(CXX) -o program foo.cpp main.cpp $(CFLAGS) 5

Make Több fordítási egység: CXX=g++ CFLAGS= std=c++11 pedantic foo.o: foo.cpp foo.h $(CXX) c -o foo.o foo.cpp $(CFLAGS) main.o: main.cpp $(CXX) c -o main.o main.cpp $(CFLAGS) program: foo.o main.o $(CXX) -o program foo.o main.o $(CFLAGS) 6

Make Automatikus változók: $@: a cél (fájl)neve $<: az első függőség neve $^: az összes függőség neve $?: a célnál frissebb függőségek nevei $(@D): a cél nevének könyvtárrésze $(@F): a cél nevének fájlrésze stb. 7

Make Automatikus változók 1. példa: CXX=g++ CFLAGS= std=c++11 pedantic DEPS=foo.h %.o: %.c $(DEPS) $(CXX) -c -o $@ $< $(CFLAGS) program: foo.o main.o $(CXX) -o program foo.o main.o $(CFLAGS) 8

Make Automatikus változók 2. példa: CXX=g++ CFLAGS= std=c++11 pedantic DEPS=foo.h OBJ=foo.o main.o %.o: %.c $(DEPS) $(CXX) -c -o $@ $< $(CFLAGS) program: $(OBJ) $(CXX) -o $@ $^ $(CFLAGS) 9

Make Forrás és fordítási könyvtárszerkezet kezelése (pl. include, obj): IDIR=../include ODIR=obj CXX=g++ CFLAGS= std=c++11 pedantic -I$(IDIR) _DEPS=foo.h DEPS=$(patsubst %, $(IDIR)/%, $(_DEPS)) _OBJ=foo.o main.o OBJ = $(patsubst %, $(ODIR)/%, $(_OBJ)) $(ODIR)/%.o: %.c $(DEPS) $(CXX) -c -o $@ $< $(CFLAGS) $(ODIR)/program: $(OBJ) $(CXX) -o $@ $^ $(CFLAGS) 10

Make Hamis (phony) célok:.phony: all all: $(ODIR)/program... további célok....phony: clean clean: rm -f $(ODIR)/*.o $(ODIR)/program 11

Make Modulok (alkönyvtárak) kezelése:.phony: all all: program $(MAKE) C module_a $(MAKE) C module_b $(CXX) o program $(CFLAGS) \ module_a/obj/modul_a.o \ module_a/obj/modul_b.o 12

CMake CMake https://cmake.org/ Platformfüggetlen és fordítófüggetlen generátor alacsonyabb szintű fordító eszközökhöz. Pl. GNU Make, MSVC, Ninja. A konfigurációt a CMakeLists.txt állományban adjuk meg. Futtatás: cmake <paraméterek> Példa CMakeLists.txt: cmake_minimum_required (VERSION 3.7) project(helloworld) add_executable(helloworld main.cpp foo.cpp) 13

CMake Változók használata: cmake_minimum_required (VERSION 3.7) project(helloworld) set(srcs \ main.cpp \ foo.cpp \ foo.h) add_executable(helloworld ${SRCS}) 14

CMake C++ fordító paraméterezése: cmake_minimum_required (VERSION 3.7) project(helloworld) set(cmake_cxx_standard 11) set(cmake_cxx_flags "-O2 -pedantic") add_executable(helloworld main.cpp foo.cpp) 15

CMake Statikus vagy dinamikus könyvtár készítése: cmake_minimum_required (VERSION 3.7) project(mystack) set(cmake_cxx_standard 11) set(cmake_cxx_flags "-O2 -pedantic") add_library (my_stack_static STATIC mystack.cpp) add_library (my_stack_dynamic SHARED mystack.cpp) 16

CMake Include path bővítése: cmake_minimum_required (VERSION 3.7) project(helloworld) set(cmake_cxx_standard 11) set(cmake_cxx_flags "-O2 -pedantic") include_directories("include") add_executable(helloworld main.cpp foo.cpp) 17

CMake Csomag függőségek definiálása: cmake_minimum_required (VERSION 3.7) project(myprogram) find_package(somepackage) include_directories(...) link_directories(...) link_libraries(...) Elegendő lehet a célhoz linkelni: target_link_directories(mytarget...) target_link_libraries(mytarget...) 18

CMake OpenCV használata: cmake_minimum_required (VERSION 3.7) project(myprogram) find_package(opencv REQUIRED) link_libraries(${opencv_libs}) 19

CMake Boost használata: cmake_minimum_required (VERSION 3.7) project(myprogram) set(boost_use_static_libs ON) set(boost_use_static ON) find_package(boost REQUIRED COMPONENTS filesystem log program_options) include_directories(${boost_include_dirs}) link_libraries(${boost_libraries}) 20

CMake Qt használata: cmake_minimum_required (VERSION 3.7) project(qthelloworld) set(cmake_include_current_dir ON) set(cmake_automoc ON) set(cmake_autouic ON) find_package(qt5widgets CONFIG REQUIRED) set(srcs mainwindow.ui mainwindow.cpp main.cpp ) add_executable(helloworld WIN32 ${SRCS}) target_link_libraries(helloworld Qt5::Widgets) 21

CMake Modulok (alkönyvtárak) kezelése: cmake_minimum_required (VERSION 3.7) project(myprogram)... Konfiguráció... add_subdirectory(module_a) add_subdirectory(module_b) 22

CMake Jellemzően egy külön build könyvtárba szeretnénk fordítani: mkdir build && cd build cmake../ vagy cmake../src Több féle generátor közül választhatunk: GNU Makefile használata: cmake -G "Unix Makefiles"../ Microsoft Visual Studio: cmake -G "Visual Studio 15 2017 Win64"../ Xcode: cmake -G Xcode../ Majd fordítjuk a programot: Makefile: make MSVC: msbuild MyProgram.sln 23

CMake Megadhatunk egy telepítési könyvtárat, ahova a végső binárisokat át szeretnénk másolni: cmake -DCMAKE_INSTALL_PREFIX=../install../src Példa CMakeLists.txt: cmake_minimum_required (VERSION 3.7) project(myprogram) set(srcs main.cpp foo.cpp foo.h) add_executable(helloworld ${SRCS}) install(targets HelloWorld DESTINATION ${CMAKE_INSTALL_PREFIX}) Makefiles: make install MSVC: msbuild INSTALL.vcxproj 24

MSBuild / XBuild A Microsoft saját build eszköze Visual Studio projektekre. A.sln solution és a.csproj/.vcxproj projekt fájlok alapján fordítja le az alkalmazást. A projekt állományok XML formátumúak, a projekthez tartozó fájlok mellett fordítási konfigurációk és egyéb beállítások is megadhatók bennük. Például: msbuild SolutionFile.sln /t:build /p:configuration=release a SolutionFile.sln fájlban adott solutionra a Build target végrehajtása a Release konfiguráció szerint Az MSBuild Mono projekt alatti implementációja az XBuild. 25

A.NET Framework keretrendszer Problémák a.net Framework keretrendszerrel: Windows-központú megközelítés Monolitikus, nem megfelelően modularizált felépítés Zárt forráskód 26

A.NET Core keretrendszer A.NET Core ezekre nyújt megoldást: Cross-platform (Windows, Linux, macos) Modularizált felépítés, csak az alkalmazáshoz szükséges komponenseknek kell jelen lennie. Nyílt forráskód (https://github.com/dotnet/core) Érdemes.NET Core-t használni: Platformfüggetlen és/vagy open source projekteknél Grafikus felülettel nem rendelkező alkalmazások esetében, tipikusan ilyenek a szerveralkalmazások Microservicek készítésekor (modularizáltság), konténerek használatakor (pl. Docker) Magas teljesítmény és skálázhatóság esetén (a.net Core és az ASP.NET Core teljesítménye jelentősen jobb) 27

A.NET Framework és Core kapcsolata 28

A.NET Standard Felmerülő problémák: Különböző keretrendszerben írt alkalmazások integrálása Általános felhasználható programkönyvtárak fejlesztése.net Standard: Közös, megosztott API az egyes keretrendszer BCL-ek (Base Class Library) felett Felváltja a PCL (Portable Class Library) projekteket 29

A.NET Standard 30

A.NET Standard.NET Standard 1.0 1.1 1.2 1.3 1.4 1.5 1.6 2.0.NET Core 1.0 1.0 1.0 1.0 1.0 1.0 1.0 2.0.NET Framework (with.net Core 1.x SDK).NET Framework (with.net Core 2.0 SDK) 4.5 4.5 4.5.1 4.6 4.6.1 4.6.2 4.5 4.5 4.5.1 4.6 4.6.1 4.6.1 4.6.1 4.6.1 Mono 4.6 4.6 4.6 4.6 4.6 4.6 4.6 5.4 Xamarin.iOS 10.0 10.0 10.0 10.0 10.0 10.0 10.0 10.14 Xamarin.Mac 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.8 Xamarin.Android 7.0 7.0 7.0 7.0 7.0 7.0 7.0 8.0 Universal Windows Platform 10.0 10.0 10.0 10.0 10.0 Windows 8.0 8.0 8.1 Windows Phone 8.1 8.1 8.1 Windows Phone Silverlight 8.0 10.0.1629 9 10.0.1629 9 10.0.1629 9 31

Fordítás.NET Core keretrendszer alatt A platformfüggetlen.net Core keretrendszer alatt a dotnet konzolos utasítással érhetjük el az SDK-t. A projekteket változatlanul solutionökre (.sln fájl) és projektekre (.csproj/.vcxproj fájlok) osztjuk, amelyek XML formátumúak. Például: NuGet csomagok visszaállítása: dotnet nuget restore Fordítás: dotnet build path/to/solutionfile.sln Kurrens könyvtárra: dotnet build Fordítás a Release konfiguráció szerint: dotnet build --configuration Release Futtatatás: dotnet run path/to/solutionfile.sln Már előállított binárisra: dotnet path/to/binary.exe 32