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

Marko Vojinovic vmarko at ipb.ac.rs
Tue Feb 22 16:05:31 CET 2022


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
> 
> 
>


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