Skip to content

Archives

  • tammikuu 2022
  • joulukuu 2021
  • marraskuu 2021
  • lokakuu 2021
  • syyskuu 2021

Categories

  • Ei kategorioita
Trend RepositoryArticles and guides
Articles

Eclipse 4.3 (Kepler) C/C++-ohjelmointiin

On 9 marraskuun, 2021 by admin

Eclipse on IBM:n tukema avoimen lähdekoodin integroitu kehitysympäristö (IDE). Emosivusto on @ www.eclipse.org. Eclipse on suosittu Java-projektien kehittämiseen. Se tukee myös C/C++-, PHP-, Python-, Perl- ja muiden web-projektien kehittämistä laajennettavien lisäosien avulla. Eclipse on cross-platform ja toimii Windowsissa, Linuxissa ja Mac OS:ssä.

  • How to Install Eclipse C/C++ Development Tool (CDT) 8.1.2 for Eclipse 4.2.2 (Juno)
  • Ensimmäisen C/C++-ohjelman kirjoittaminen Eclipsessä
  • C++-ohjelma
  • C-ohjelma
  • C++-ohjelma makefileen
  • Lue dokumentaatio
  • C/C++ -ohjelmien virheenkorjaus Eclipse CDT:ssä
  • Vihjeitä & Niksit
  • C/C++ ohjelmistokehitys GCC:n avulla
  • File I/O in Eclipse

How to Install Eclipse C/C++ Development Tool (CDT) 8.1.2 for Eclipse 4.2.2 (Juno)

Vaihe 0: Asenna MinGW GCC tai Cygwin GCC

Käyttääksesi Eclipseä C/C++-ohjelmointiin tarvitset C/C++-kääntäjän. Windowsissa voit asentaa joko MinGW GCC:n tai Cygwin GCC:n. Valitse MinGW, jos et ole varma, koska MinGW on kevyempi ja helpompi asentaa, mutta siinä on vähemmän ominaisuuksia.

  1. MinGW GCC:
  2. Cygwin GCC: Lue ”Cygwinin asentaminen”. Varmista, että valitset ”gcc”, ”g++”, ”gdb” ja ”make” paketit kohdasta ”Devel”. (Development) -luokkaan – nämä paketit eivät kuulu oletusasennukseen.
Vaihe 1: Asenna Eclipsen C/C++-kehitystyökalu (CDT)

CdT:n voi asentaa kahdella tavalla riippuen siitä, oletko aiemmin asentanut Eclipsen:

  1. Jos olet jo asentanut ”Eclipse for Java Developers” tai muita Eclipse-paketteja, voit asentaa CDT-liitännäisen seuraavasti:
    Käynnistä Eclipse ⇒ Ohje ⇒ Asenna uudet ohjelmistot ⇒ ”Työskentele” -kentässä vedä alas pudotusvalikko ja valitse ”Kepler – http://download.eclipse.org/releases/kepler” (tai juno Eclipse 4.2:lle; tai helios Eclipse 3.7:lle).
    ”Name”-kentässä laajenna ”Programming Language”-solmua ⇒ Valitse ”C/C++ Development Tools” ⇒ ”Next” ⇒ … ⇒ ”Finish”.
  2. Jos et ole asentanut mitään Eclipse-pakettia, voit ladata ”Eclipse IDE for C/C++ Developers” osoitteesta http://www.eclipse.org/downloads ja purkaa ladatun tiedoston pakkauksen haluamaasi hakemistoon.
Vaihe 2: Konfigurointi

Mitä tahansa konfigurointia EI tarvitse tehdä, kunhan Cygwin- tai MinGW-ohjelmiston binäärit ovat sisällytettyinä ympäristömuuttujaan PATH. CDT etsii PATH:sta löytääkseen C/C++-kääntäjät.

Ensimmäisen C/C++-ohjelman kirjoittaminen Eclipsessä

C++-ohjelma

Vaihe 0: Käynnistä Eclipse
  1. Käynnistä Eclipse ajamalla ”eclipse.exe” Eclipseen asennetussa hakemistossa.
  2. Valitse sopiva hakemisto työalueellesi (esim, johon haluat tallentaa työsi).
  3. Jos ”Tervetuloa”-näyttö tulee näkyviin, sulje se klikkaamalla ”sulje”-painiketta.
Vaihe 1: Luo uusi C++-projekti

Jokaista C++-sovellusta varten on luotava projekti, jossa säilytetään kaikki lähdekoodit, objektitiedostot, suoritettavat tiedostot ja asiaankuuluvat resurssit.

Luot uuden C++-projektin:

  1. Valitse ”Tiedosto”-valikosta ⇒ ”Uusi” ⇒ Projekti… ⇒ C/C++ ⇒ C++-projekti.
  2. ”C++-projekti”-valintaikkuna avautuu.
    1. Kirjoita ”Projektin nimi”-kenttään ”FirstProject”.
    2. Valitse ”Projektityypit”-ruutuun ”Suoritettava” ⇒ ”Tyhjä projekti”
    3. Valitse ”Työkalujen tyypit”-ruudusta ”Suoritettava” ⇒ ”Tyhjä projekti”
    4. Valitse työkalujen ”Työkalujen” -ruutuun kääntäjäsi, esim, ”Cygwin GCC” tai ”MinGW GCC” ⇒ Seuraava.
  3. ”Select Configurations” -valintaikkuna tulee näkyviin. Valitse sekä ”Debug” että ”Release” ⇒ Finish.

Vaihe 2: Kirjoita Hello-world C++ -ohjelma
  1. ”Project Explorerissa” (vasemmanpuoleisin paneeli) ⇒ Napsauta hiiren kakkospainikkeella ”FirstProject”. (tai käytä ”File”-valikkoa) ⇒ New ⇒ Source File.
  2. ”New Source File”-valintaikkuna avautuu.
    1. Kirjoita ”Source file”-kenttään ”Hello.cpp”.
    2. Klikkaa ”Finish”.
  3. Lähdetiedosto ”Hello.cpp” avautuu editoripaneeliin (avaa tarvittaessa kaksoisnapsauttamalla ”test.cpp”). Syötä seuraavat koodit:
    #include <iostream>using namespace std; int main() { cout << "Hello, world!" << endl; return 0;}
Jos ”Unresolved Inclusion Error”

Jos #include-lausekkeen vieressä näkyy virhe ”unresolved inclusion”, ”include paths for headers” ei ole asetettu oikein. Valitse ”Project”-valikko ⇒ Properties ⇒ C/C++ General ⇒ Paths and Symbols ⇒ ”Includes”-välilehdellä:

Cygwin GCC:lle:

  1. ”Lisää” seuraavat hakemistot ”GNU C” -kenttään, jossa $CYGWIN_HOME on asennettu Cygwin-hakemistosi:
    • $CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include
    • $CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include-fixed
    • $CYGWIN_HOME\usr\include
    • $CYGWIN_HOME\usr\include\w32api
  2. ”Lisää” seuraavat hakemistot ”GNU C++” -hakemistoon, jossa $CYGWIN_HOME on Cygwinin asennettu hakemisto:
    • $CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include\c++
    • $CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include\c++\i686-pc-cygwin
    • $CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include\c++\backward
    • $CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include
    • $CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include-fixed
    • $CYGWIN_HOME\usr\include
    • $CYGWIN_HOME\usr\include\w32api
    • $CYGWIN_HOME\usr\include\w32api

MinGW:n GCC:n osalta:

  1. ”Lisää” seuraavat hakemistot kohtaan ”GNU C”, jossa $MINGW_HOME on MinGW:n asennettu hakemisto:
    • $MINGW_HOME\lib\gcc\mingw32.6.x\include
    • $MINGW_HOME\include
    • $MINGW_HOME\lib\gcc\mingw32.6.x\include-fixed
  2. ”Lisää” seuraavat hakemistot ”GNU C++” -hakemistoon, jossa $MINGW_HOME on Cygwinin asennettu hakemisto:
    • $MINGW_HOME\lib\gcc\mingw32.6.x\include\c++
    • $MINGW_HOME\lib\gcc\mingw32.6.x\include\c++\mingw32
    • $MINGW_HOME\lib\gcc\mingw32.6.x\include\c++\backward
    • $MINGW_HOME\lib\gcc\mingw32.6.x\include
    • $MINGW_HOME\include
    • $MINGW_HOME\lib\gcc\mingw32.6.x\include-fixed

Huomautus: Löytääksesi otsikoiden polut voit tehdä haun otsikoilla, kuten esim. ”stdio.h”. (C:lle) ja ”iostream”. (C++:lle) Cygwinin tai MinGW:n asennetun hakemiston alta.

Huomautus: Jos linkityksen aikana ilmenee ”error while loading shared libraries”. Asenna ”libmpfr4” cygwiniin.
Vaihe 3: Compile/Build

Klikkaa hiiren oikealla painikkeella ”FirstProject” (tai käytä ”Project”-valikkoa) ⇒ valitse ”Build Project” kääntääksesi ja linkittääksesi ohjelman.

Vaihe 4: Suorita

Klikkaa hiiren kakkospainikkeella hiiren kakkospainikkeella ”FirstProject” (tai missä tahansa lähdekoodissa ”test.cpp”, tai valitse ”Suorita”-valikko) ⇒ Suorita nimellä ⇒ Paikallinen C/C++-sovellus ⇒ (Jos kysytään, valitse Cygwinin gdb-debuggeri) ⇒ ”Konsoli”-paneeliin ilmestyy ulostulo ”Hello, world!”.

Huomautus: Sinun on luotava uusi C++-projekti JOKAISTA ohjelmointiongelmaa varten. Tämä on sotkuista leluohjelmien kirjoittamisessa!

C-ohjelma

Seuraa samoja vaiheita kuin edellä. Luo ”C-projekti” (C++-projektin sijaan). Kokeile seuraavaa Hello-world-ohjelmaa (nimeltään ”Hello.c”).

#include <stdio.h> int main() { printf("Hello, world!\n"); return 0;}

C++-ohjelma makefileen

Edellisissä esimerkeissä käytimme niin sanottua managed-makea, jossa Eclipse generoi automaattisesti makefileen ohjelman rakentamiseksi. Voimme myös halutessamme kirjoittaa oman makefilen, jolloin voimme hallita rakentamisprosessia täysin.

Vaihe 1: C++ Makefile-projektin luominen

Valikosta ”File” ⇒ New ⇒ Project… ⇒ C/C++ ⇒ C++-projekti ⇒ Kirjoita ”Projektin nimi” -kohtaan ”HelloCppMakefile”. ⇒ Kohdassa ”Projektin tyyppi” valitse ”Makefile-projekti ”, ”Tyhjä projekti” ⇒ Kohdassa ”Työkaluketjut” valitse ”Cygwin GCC” tai ”MinGW GCC”. Älä välitä varoitusviestistä.

Vaihe 2: Kirjoita C++-ohjelma

Klikkaa hiiren kakkospainikkeella projektia ⇒ Uusi ⇒ Lähdetiedosto ⇒ Kirjoita ”Lähdetiedosto” -kohtaan ”Hello.cpp”. ⇒ Kirjoita seuraavat lähdekoodit:

#include <iostream>using namespace std; int main() {cout << "Hello, world!" << endl;return 0;}
Vaihe 3: Kirjoita Makefile

Klikkaa hiiren oikealla hiiren kakkospainikkeella projektia ⇒ Uusi ⇒ Tiedosto ⇒ Kohtaan ”Tiedoston nimi” kirjoita ”makefile” ⇒ Syötä seuraavat koodit. Huomaa, että sisennyksessä on käytettävä välilehteä (EI välilyöntejä).

all: Hello.exe clean:rm Hello.o Hello.exe Hello.exe: Hello.og++ -g -o Hello.exe Hello.o Hello.o: Hello.cppg++ -c -g Hello.cpp
Vaihe 4: Rakenna projekti

Klikkaa hiiren kakkospainikkeella projektia ⇒ Rakenna projekti.

Vaihe 5: Suorita ohjelma

Klikkaa hiiren kakkospainikkeella projektia ⇒ Suorita nimellä ⇒ Paikallinen C/C++-sovellus.

Kirjoita makefile, jolla voit kääntää leluohjelmat yhden projektin alle.

Lue dokumentaatio

Vähintäänkin sinun PITÄÄ selata Eclipsen ”Workbench-käyttöopas” ja ”C/C++-kehityksen käyttöopas” – joihin pääset Eclipsen ”Tervetuloa”-sivun tai ”Ohje”-valikon kautta. Näin säästyt monilta tuskallisilta tunneilta, kun yrität myöhemmin selvittää, miten joitain asioita tehdään.

C/C++ -ohjelmien virheenkorjaus Eclipse CDT:ssä

Kyky käyttää graafista virheenkorjausohjelmaa ohjelman virheenkorjaukseen on ratkaisevan tärkeää ohjelmoinnissa. Se voi säästää lukemattomia tunteja arvailemasta, mikä meni pieleen.

Vaihe 0: Kirjoita C++-ohjelma – Seuraava ohjelma laskee ja tulostaa luvun n (=1*2*3*...*n) faktoriaalin. Ohjelmassa on kuitenkin looginen virhe ja se tuottaa väärän vastauksen n=20 (”The Factorial of 20 is -2102132736” – negatiivinen luku?!).

1234567891011121314
#include <iostream>using namespace std; int main() { int n = 20; int factorial = 1; // n! = 1*2*3...*n for (int i = 1; i <= n; i++) { factorial *= i; } cout << "The Factorial of " << n << " is " << factorial << endl; return 0;}
The Factorial of 20 is -2102132736

Käyttäkäämme graafista virheenkorjausohjelmaa.

Vaihe 1: Aseta alustava taukopiste – Taukopiste keskeyttää ohjelman suorituksen, jotta voit tutkia ohjelman sisäisiä tiloja (esim, muuttujien arvoja) ohjelmassa. Ennen debuggerin käynnistämistä sinun on asetettava vähintään yksi pysäytyspiste ohjelman suorituksen keskeyttämiseksi ohjelman sisällä. Aseta pysäytyskohta main()-funktioon kaksoisnapsauttamalla main() sisältävän rivin vasenta reunaa. Sininen ympyrä ilmestyy vasempaan reunaan osoittaen, että kyseiselle riville on asetettu taukopiste.

Vaihe 2: Käynnistä debuggeri – Napsauta hiiren kakkospainikkeella projektia (tai käytä ”Suorita”-valikkoa) ⇒ ”Debug As” ⇒ ”Paikallinen C/C++-sovellus” ⇒ valitse ”Kyllä” vaihtaaksesi ”Debug”-näkökulmaan (Näkökulma on paneelien tietynlainen sijoittelun, joka soveltuu tiettyyn kehitystehtävään, kuten muokkaamiseen tai virheenkorjaukseen, mukaan). Ohjelma aloittaa suorituksen, mutta keskeyttää toimintansa taukopisteeseen eli main()-funktioon.

Kuten seuraavassa kuvassa näkyy, korostettu viiva (johon myös sininen nuoli osoittaa) osoittaa seuraavassa vaiheessa suoritettavan lausekkeen.

Vaihe 3: Vaihe 3: Step-Over ja muuttujien ja ulostulojen tarkkailu – Napsauttamalla Step-Over-painiketta (”Step Over”) (tai valitsemalla ”Step-Over” (Vaihe 4) ”Run”-valikosta) voit käydä ohjelmasi läpi yksittäisaskeleella. Tutki jokaisella askeleella muuttujien arvoja (”Variable”-paneelissa) ja ohjelmasi tuottamia ulostuloja (”Console”-paneelissa), jos sellaisia on. Voit myös asettaa kursorin minkä tahansa muuttujan kohdalle tarkastellaksesi muuttujan sisältöä.

Single-stepping through the program and watching the values of internal variables and the outputs produced is the ultimate mean in debugging programs – because it is exactly how the computer runs your program!

Step 4: Breakpoint, Run-To-Line, Resume and Terminate – As mentioned, a breakpoint suspends program execution and let you allow you examine the internal states of the program. Voit asettaa taukopisteen tietylle lausekkeelle kaksoisnapsauttamalla kyseisen rivin vasenta reunaa (tai valitsemalla ”Toggle Breakpoint” (Vaihda taukopiste) ”Run” (Suorita) -valikosta).

”Resume” (Jatka) jatkaa ohjelman suoritusta seuraavaan taukopisteeseen tai ohjelman loppuun asti.

”Single-step” (Yksivaiheinen) silmukan, jossa on suuri laskentaerä, läpäiseminen on aikaa vievää. Voit asettaa taukopisteen välittömästi silmukan ulkopuolella olevaan lausekkeeseen (esim. edellä olevan ohjelman rivi 12) ja antaa ”Resume”-komentoa silmukan suorittamiseksi loppuun.

Vaihtoehtoisesti voit asettaa kursorin tiettyyn lausekkeeseen ja antaa ”Run-To-Line”-komentoa ”Run”-valikosta jatkaaksesi ohjelman suorittamista kyseiseen riviin asti.

”Terminate”-komento lopettaa virheenkorjaussession. Lopeta aina nykyinen debuggausistunto käyttämällä ”Terminate” tai ”Resume” ohjelman loppuun asti.

Vaihe 5: Paluu C/C++-näkökulmaan – Napsauta oikeassa yläkulmassa olevaa ”C/C++”-näkökulman kuvaketta siirtyäksesi takaisin ”C/C++”-näkökulmaan jatko-ohjelmointia varten (tai ”Ikkuna”-valikosta ⇒ Avaa näkymä ⇒ C/C++).

En voi enempää painottaa, että virheenkorjausohjelmiston käytön hallitseminen on ratkaisevan tärkeää ohjelmoinnissa. Tutustu debuggerien tarjoamiin ominaisuuksiin.

Muut debuggerin ominaisuudet

Muuttujan arvon muuttaminen: Voit muuttaa muuttujan arvoa syöttämällä uuden arvon ”Variable”-paneeliin. Tämä on kätevää, kun haluat tilapäisesti muuttaa ohjelman käyttäytymistä muuttamatta lähdekoodia.

Step-Into ja Step-Return: Kun haluat debugata funktiota, sinun on käytettävä ”Step-Into” -toimintoa astuaksesi metodin ensimmäiseen lausekkeeseen. Voit käyttää ”Step-Returnia” palataksesi takaisin kutsujalle missä tahansa metodin sisällä. Vaihtoehtoisesti voit asettaa pysäytyspisteen metodin sisälle.

HUOMAUTUS: Jos saat virheilmoituksen ”Can’t find a source file at /cygdrive/c…” debuggauksen aikana, sinun on määritettävä kartoitus ”/cygdrive/c” ja ”c:/” välille (olettaen, että ohjelmasi säilytetään asemassa c. From ”Window” ⇒ ”Preferences” ⇒ ”C/C++” ⇒ ”Debug” ⇒ ”Common Source Lookup Path”, valitse ”Add” ⇒ ”Path Mapping”.

Vihjeitä & Niksit

Lue Eclipse for Java:n Vinkit & Niksit -osiosta yleisiä vinkkejä Eclipsen käyttöön.

C/C++ ohjelmistokehitys GCC:n avulla

  1. Eclipse CDT:ssä käytettävät komennot projektin rakentamiseen löydät osoitteesta ”<workspace>\.metadata\.plugins\org.eclipse.cdt.ui\global-build.log”.
  2. include-polkujen, kirjastopolkujen ja kirjastojen asettaminen: Kun ohjelmaa rakennetaan, kääntäjä tarvitsee otsikkotiedostoja kääntääkseen lähdekoodit; linkittäjä tarvitsee kirjastoja ratkaistakseen ulkoiset viittaukset. Kääntäjä etsii ”include-poluista” #include-direktiiveissä määritellyt otsikkotiedostot. Linkittäjä etsii ”library-polkuista” ”kirjastot”, joita tarvitaan ohjelman linkittämiseen. GCC:ssä include-polku määritetään -Idir-optiolla tai ympäristömuuttujalla CPATH. Kirjasto-polku määritetään -Ldir-optiolla tai ympäristömuuttujalla LIBRARY_PATH. Kirjasto libxxx.a määritetään -lxxx-vaihtoehdon kautta (pieni kirjain 'l', ilman etuliitettä lib ja .a-laajennusta).
    Eclipse CDT:ssä include-polut, kirjastopolut ja kirjastot määritetään hiiren kakkospainikkeella projektissa ⇒ Ominaisuudet ⇒ C/C++ Yleinen ⇒ Polut ja symbolit ⇒ välilehdillä ”Includes”, ”Kirjastopolut” ja ”Kirjastot”. Asetukset koskevat vain valittua projektia.
    Jos haluat asettaa include- ja kirjastopolut kaikille projekteille, aseta ympäristömuuttujat CPATH ja LIBRARY_PATH. Valitse Eclipsessä ”Window” ⇒ Preferences ⇒ C/C++ ⇒ Build ⇒ Environment.
    Vaihtoehtoisesti voit kopioida otsikot ja kirjastot järjestelmähakemistoihin, jolloin voit jättää include-polut ja kirjastopolut pois.
  3. OpenGL with GLUT: Cygwiniin on asennettava gcc, g++, gdb, make (Devel-luokassa) ja opengl, freeglut (graphics-luokassa). Otsikot gl.h, glu.h, glut.h pidetään $cygwin\usr\include\w32api\GL:ssä. Käytä #include <GL/gl__.h> sisällyttääksesi otsikot. Kirjastot libopengl32.a libglu32.a ja libglut32.a säilytetään $cygwin\lib\w32api:ssa. Jos haluat määrittää nämä kirjastot linkityksessä, käytä -lopengl32 -lglu32 -lglut32 -vaihtoehtoja (ilman lib-etuliitettä ja .a-laajennusta).
  4. OpenGL with SDL: Lataa SDL osoitteesta http://www.libsdl.org. Valitse Development Libraries ⇒ win32 ⇒ mingw32 ⇒ Unzip. Kopioi otsikkohakemisto SDL (kohdassa include) paikkaan $cygwin\usr\include\w32api; kopioi kaikki kirjastotiedostot kohdassa lib paikkaan $cygwin\lib\w32api; kopioi ajoaikakirjasto SDL.dll (kohdassa bin) paikkaan Windows/System32. Sisällytä ohjelmaasi nämä kaksi otsikkoa: #include <SDL/sdl.h> ja #include <SDL/sdl_opengl.h>. Lisää linkitystä varten nämä kirjastot: -lSDL -lSDLmain.
  5. #pragma-kommenttidirektiivi: pragma-kommenttidirektiiviä, esim. #pragma comment(lib, "opengl32.lib"), käytetään usein tietyn kirjaston sisällyttämiseen (sama kuin -l-valinta). Tämä järjestelmäriippuvainen direktiivi toimii Windowsin kääntäjällä, mutta EI GCC:ssä.
  6. Virhe ”multiple target patterns”: GNU make -ohjelmassa on ongelma (kohdassa $Cygwin\bin\make.exe). Korvattu tällä kopiolla @ http://www.cmake.org/files/cygwin/make.exe.
  7. fflush(stdout): gcc-kirjasto käyttää puskuroitua I/O:ta (C-spesifikaation mukaisesti). Tuloste kirjoitetaan tulostusvirtaan vasta rivinvaihdon jälkeen. Voit huuhtoa tulosteen fflush().
  8. Projektin nimi ei saa sisältää sanaa ”setup”: Jos nimeät C/C++-projektin nimellä, joka sisältää sanan ”setup”, tuloksena syntyvä ”*setup*.exe” käynnistää UAC:n (User Authorization Control) ja vaatii järjestelmänvalvojan oikeudet suoritettavaksi. (Tämän selvittäminen vei minulta muutaman tunnin! Kokeile nimetä ”hello.exe” uudelleen muotoon ”mysetup.exe”.)

File I/O in Eclipse

Viittaa Eclipseen Javan File IO.

Vastaa Peruuta vastaus

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Arkistot

  • tammikuu 2022
  • joulukuu 2021
  • marraskuu 2021
  • lokakuu 2021
  • syyskuu 2021

Meta

  • Kirjaudu sisään
  • Sisältösyöte
  • Kommenttisyöte
  • WordPress.org
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress