[QGHG-it-dev-list] Generalni refactoring koda...
Nenad Korolija
nenadko at gmail.com
Tue Feb 22 08:48:08 CET 2022
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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ipb.ac.rs/pipermail/qghg-it-dev-list/attachments/20220222/1f042f83/attachment-0001.htm>
More information about the QGHG-it-dev-list
mailing list