[QGHG-it-dev-list] Generalni refactoring koda...

Marko Vojinovic vmarko at ipb.ac.rs
Tue Feb 22 18:04:35 CET 2022


Ok, vazi --- ako vam ne treba za VS, Makefile onda mozemo da dodamo kasnije, kad kod postane dovoljno komplikovan. A do tada onda mozemo po potrebi samo da update-ujemo onaj build-skript.sh.

:-)
Marko


Dr. Marko Vojinovic
Group for Gravitation, Particles and Fields
Institute of Physics
University of Belgrade
======================
home page: www.markovojinovic.com
e-mail:    vmarko at ipb.ac.rs



On Tue, 22 Feb 2022, Jaroslav Blagojevic wrote:

> Visual Studio radi bez problema, ne vidim potrebu za Makefile. Ako je ista sintaksa Makefile-a za Windows i Linux, možemo da stavimo jedan, čisto da može da se kompajlira sa 'make'.
> Pozdrav,
> 
> Jaroslav
> 
> 
> On Tue, Feb 22, 2022 at 4:05 PM Marko Vojinovic <vmarko at ipb.ac.rs> wrote:
>
>       Evo Google kaze da Visual Studio podrzava Makefile kao projekt:
>
>       "In Visual Studio 2017 and later, the Makefile project template is available when the C++ Desktop Development workload is installed. Follow the wizard to specify the
>       commands and environment used by your makefile. You can then use this project to build your code in Visual Studio."
>
>       Kako izgleda, ovo bi nam to resilo do kraja interoperabilnost sa VS-om, pa da vise ne gubimo vreme na te tehnikalije nego da se koncentrisemo na pisanje koda.
>
>       Dakle napravite Makefile, na osnovu onog mog skripta.
>
>       :-)
>       Marko
> 
>
>       Dr. Marko Vojinovic
>       Group for Gravitation, Particles and Fields
>       Institute of Physics
>       University of Belgrade
>       ======================
>       home page: www.markovojinovic.com
>       e-mail:    vmarko at ipb.ac.rs
> 
> 
>
>       On Tue, 22 Feb 2022, Nenad Korolija wrote:
>
>       > Sjajno! Ne diramo onda nista vise za sad...
>       >
>       > Pozdrav,
>       > Nenad
>       >
>       > On Tue, Feb 22, 2022 at 8:53 AM Dusan Cvijetic <dusancvijetic2000 at gmail.com> wrote:
>       >       Pozdrav,
>       >
>       > VS radi kako treba uz najnoviji apdejt! Isprobao sam ponovo File/New/Project from existing code, i sada ga kompajlira iz prve.
>       >
>       > Pozdravi,
>       > Dušan
>       >
>       > уто, 22. феб 2022. у 08:48 Nenad Korolija <nenadko at gmail.com> је написао/ла:
>       >       Naravno, meni odmah perfektno radi. :)
>       > Marko, ja sam razmisljao na temu Makefile, sto bi valjda resilo VS probleme.
>       > Vidim da si include probleme jednostavno resio sa #include "triangulator.hpp".
>       > Sto se mene tice, OK je ovako (ja sam zadovoljan:),
>       > mada ukljucujes u input-and-output.cpp i set i vector i list.
>       > Svidja mi se i sto pravis biblioteku.
>       >
>       > Mislim da je sustina VS problema sto hoce da kompajlira svaki unit zasebno.
>       > Makefile bi u neki direktorijum (npr. obj) ostavljao pojedinacne .o fajlove,
>       > kako ne bi moralo sve da se rekompajlira, vec samo promenjeno,
>       > a brisalo bi se sa make clean. Naravno, kod je mali i ne bi bilo neke primetne razlike.
>       > Nisam razmisljao na temu biblioteka. Naravno, sve je moguce napraviti...
>       >
>       > Pozdrav,
>       > Nenad
>       >
>       > On Tue, Feb 22, 2022 at 5:43 AM Marko Vojinovic <vmarko at ipb.ac.rs> wrote:
>       >
>       >       Pozdrav svima,
>       >
>       >       Obratite paznju na moj commit od veceras/nocas, i obavezno uradite "git pull", jer je dosta toga prepravljeno:
>       >
>       >       * Prvo, razmrsio sam .hpp i .cpp fajlove --- .cpp fajlovi se vise ne include-uju nigde, a svi .hpp fajlovi se include-uju u glavni "triangulator.hpp", koji je
>       >       onda include-ovan u svaki .cpp fajl ponosob. Ovo omogucava da se svaki .cpp fajl kompajlira nezavisno od ostalih (u object-fajl), sto ce verovatno da olaksa
>       >       zivot delu ekipe koja koristi Visual Studio. :-) Skrecem vam paznju da pazite na redosled kojim se svi ostali .hpp fajlovi include-uju u triangulator.hpp ---
>       >       vazno je da klase definisemo redom.
>       >
>       >       * Drugo, premestio sam neke delove koda na zgodnija mesta, i kreirao par novih fajlova, tako da sada svaki .cpp fajl ima svoj .hpp fajl i obratno. Izuzetak su
>       >       triangulator.hpp i main.cpp koji nemaju svoje parnjake. Ovakvu strukturu bi imalo smisla da cuvamo i ubuduce, kada budemo dodavali nove fajlove. Kad broj fajlova
>       >       naraste, mozemo da ih razvrstamo i po direktorijumima...
>       >
>       >       * Trece, fajl constants.hpp je obrisan, a konstante koje su bile u njemu su premestene u color.hpp odnosno u input-and-output.hpp, gde su im prirodnija mesta.
>       >       Dusan ce da se obraduje da sam ih sve stavio u #ifndef. ;-) U nov fajl input-and-output.cpp sam stavio log-report f-ju, a tu cemo kasnije da dodamo i f-je za
>       >       citanje/snimanje u fajl (zadaci 7 i 8), kao i raznorazne druge f-je za export-ovanje u .tex, ovo, ono...
>       >
>       >       * Cetvrto, napisao sam build-script.sh, u kome se vide detalji sta i kako treba da se kompajlira. Pod Linux-om mozete prosto da izvrsite skript, a ako radite pod
>       >       Windows-om procitajte sta pise u fajlu, pa na osnovu toga konfigurisite svoj build-environment. Skript cemo u buducnosti verovatno da zamenimo nekom ozbiljnijom
>       >       Makefile strukturom i/ili ekvivalentom za Windows, ali za sada moze da posluzi i ovako.
>       >
>       >       * I peto --- *sam kod* uopste nisam menjao, samo sam ga prepakovao po fajlovima. Sve f-je i klase su iste kao sto su bile pre refactoring-a. Tako da ako ste
>       >       poceli nesto da radite, mozete da nastavite bez ometanja, samo obratite paznju sta treba da ide u koji fajl --- svaka f-ja ide u neki .cpp, a njena deklaracija u
>       >       odgovarajuci .hpp.
>       >
>       >
>       >       To je to sto se tice izmena. Logika celog poduhvata je sledeca --- glavni "priozvod" celog naseg koda treba da budu sledeca dva fajla:
>       >
>       >          triangulator-library
>       >
>       >       (sa ekstenzijom .a, .so, .lib, .dll, ili bilo sta sto se smatra standardnim za staticke biblioteke na datoj platformi), i
>       >
>       >          triangulator-gui
>       >
>       >       (bez ekstenzije ili sa ekstenzijom .exe, .app, ili sta god je odgovarajuce za izvrsni fajl na datoj platformi).
>       >
>       >       Prvi fajl je staticka biblioteka rutina [1] --- nju ce "nas korisnik" da upotrebljava u svom kodu ovako kako je mi sada upotrebljavamo u main.cpp fajlu ---
>       >       include-ovace triangulator.hpp (koji sadrzi definicije svih konstanti, klasa, i deklaracije svih f-ja), i onda ce ulinkovati biblioteku rutina dok kompajlira
>       >       svoj kod. Naravno, ako zeli, moze da prekompajlira i samu biblioteku, ako mu binary verzija ne odgovara.
>       >
>       >       Drugi fajl ce da bude izvrsni, koji pokrece GUI. Nega cemo da napravimo isto kao i nas korisnik --- include-ovacemo triangulator.hpp u kod za GUI, i onda cemo da
>       >       ulinkujemo biblioteku rutina tokom kompajliranja GUI-ja. GUI ce da poziva f-je iz biblioteke kako mu odgovara, zavisno na sta klikcemo po GUI-ju.
>       >
>       >       To je ukratko generalna logika kako cela stvar treba da radi. Ubuduce samo treba da postujemo strukturu .hpp/.cpp parova, da azuriramo build-script.sh kada
>       >       dodajemo nove .cpp fajlove, i da svi novi include-ovi idu iskljucivo u triangulator.hpp i nigde drugo.
>       >
>       >       Btw, Jaroslave i Dusane, javite mi kako stoje stvari sa Visual Studiom nakon ovog refactoring-a --- da li je sada jednostavnije import-ovati kod u VS, i da li je
>       >       proradio i native VS-kompajler ili se i dalje oslanjate na g++.
>       >
>       >       :-)
>       >       Marko
>       >
>       >       [1] https://en.wikipedia.org/wiki/Static_library
>       >
>       >
>       >
>       >       Dr. Marko Vojinovic
>       >       Group for Gravitation, Particles and Fields
>       >       Institute of Physics
>       >       University of Belgrade
>       >       ======================
>       >       home page: www.markovojinovic.com
>       >       e-mail:    vmarko at ipb.ac.rs
>       >
>       >
>       >       --
>       >       QGHG-it-dev-list mailing list
>       >       QGHG-it-dev-list at ipb.ac.rs
>       >       http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
>       >
>       > --
>       > QGHG-it-dev-list mailing list
>       > QGHG-it-dev-list at ipb.ac.rs
>       > http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
>       >
>       > --
>       > QGHG-it-dev-list mailing list
>       > QGHG-it-dev-list at ipb.ac.rs
>       > http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
>       >
>       >
>       >--
>       QGHG-it-dev-list mailing list
>       QGHG-it-dev-list at ipb.ac.rs
>       http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
> 
> 
>


More information about the QGHG-it-dev-list mailing list