[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