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

Jaroslav Blagojevic jaroslav.blagojevic at gmail.com
Tue Feb 22 17:03:08 CET 2022


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


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