[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