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

Nenad Korolija nenadko at gmail.com
Tue Feb 22 22:53:25 CET 2022


Slazem se! Imamo poprilicno pametnijeg posla od Makefile posla :)

On Tue, Feb 22, 2022 at 6:04 PM Marko Vojinovic <vmarko at ipb.ac.rs> wrote:

>
> 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
> >
> >
> >--
> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ipb.ac.rs/pipermail/qghg-it-dev-list/attachments/20220222/e565b1fd/attachment-0001.htm>


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