Skip to content

Archives

  • Januar 2022
  • Dezember 2021
  • November 2021
  • Oktober 2021
  • September 2021

Categories

  • Keine Kategorien
Trend RepositoryArticles and guides
Articles

Eclipse 4.3 (Kepler) für die C/C++-Programmierung

On November 9, 2021 by admin

Eclipse ist eine quelloffene integrierte Entwicklungsumgebung (IDE), die von IBM unterstützt wird. Die Hauptseite ist @ www.eclipse.org. Eclipse ist beliebt für die Entwicklung von Java-Projekten. Es unterstützt auch die Entwicklung von C/C++, PHP, Python, Perl und anderen Webprojekten über erweiterbare Plug-ins. Eclipse ist plattformübergreifend und läuft unter Windows, Linux und Mac OS.

  • So installieren Sie Eclipse C/C++ Development Tool (CDT) 8.1.2 für Eclipse 4.2.2 (Juno)
  • Schreiben Sie Ihr erstes C/C++ Programm in Eclipse
  • C++ Programm
  • C-Programm
  • C++-Programm mit Makefile
  • Lesen Sie die Dokumentation
  • Debugging von C/C++-Programmen in Eclipse CDT
  • Tipps & Tricks
  • C/C++ Softwareentwicklung mit GCC
  • File I/O in Eclipse

So installieren Sie Eclipse C/C++ Development Tool (CDT) 8.1.2 für Eclipse 4.2.2 (Juno)

Schritt 0: Installieren Sie MinGW GCC oder Cygwin GCC

Um Eclipse für die C/C++-Programmierung zu verwenden, benötigen Sie einen C/C++-Compiler. Unter Windows können Sie entweder MinGW GCC oder Cygwin GCC installieren. Wählen Sie MinGW, wenn Sie sich nicht sicher sind, denn MinGW ist leichter und einfacher zu installieren, hat aber weniger Funktionen.

  1. MinGW GCC: Lesen Sie „How to Install MinGW“.
  2. Cygwin GCC: Lesen Sie „So installieren Sie Cygwin“. Stellen Sie sicher, dass Sie die Pakete „gcc„, „g++„, „gdb“ und „make“ unter der Kategorie „Devel“ auswählen. (Entwicklung) auswählen – diese Pakete sind nicht Teil der Standardinstallation.
Schritt 1: Installieren Sie das Eclipse C/C++ Development Tool (CDT)

Es gibt zwei Möglichkeiten, CDT zu installieren, je nachdem, ob Sie zuvor ein Eclipse installiert haben:

  1. Wenn Sie bereits „Eclipse for Java Developers“ oder andere Eclipse-Pakete installiert haben, können Sie das CDT-Plug-in wie folgt installieren:
    Start von Eclipse ⇒ Hilfe ⇒ Neue Software installieren ⇒ Im Feld „Work with“ das Dropdown-Menü herunterziehen und „Kepler – http://download.eclipse.org/releases/kepler“ auswählen. (oder juno für Eclipse 4.2; oder helios für Eclipse 3.7).
    Im Feld „Name“ den Knoten „Programming Language“ aufklappen ⇒ „C/C++ Development Tools“ markieren ⇒ „Next“ ⇒ … ⇒ „Finish“.
  2. Wenn Sie kein Eclipse-Paket installiert haben, können Sie „Eclipse IDE for C/C++ Developers“ von http://www.eclipse.org/downloads herunterladen und die heruntergeladene Datei in ein Verzeichnis Ihrer Wahl entpacken.
Schritt 2: Konfiguration

Sie müssen KEINE Konfiguration vornehmen, solange die Cygwin- oder MinGW-Binärdateien in der PATH-Umgebungsvariablen enthalten sind. CDT durchsucht die PATH, um die C/C++ Compiler zu finden.

Schreiben Sie Ihr erstes C/C++ Programm in Eclipse

C++ Programm

Schritt 0: Starten Sie Eclipse
  1. Starten Sie Eclipse, indem Sie „eclipse.exe“ im Eclipse-Installationsverzeichnis ausführen.
  2. Wählen Sie ein geeignetes Verzeichnis für Ihren Arbeitsbereich (d.h.,
  3. Wählen Sie ein geeignetes Verzeichnis für Ihren Arbeitsbereich (d.h. wo Sie Ihre Arbeiten speichern möchten).
  4. Wenn der „Willkommens“-Bildschirm angezeigt wird, schließen Sie ihn, indem Sie auf die Schaltfläche „Schließen“ klicken.

Schritt 1: Erstellen eines neuen C++-Projekts

Für jede C++-Anwendung müssen Sie ein Projekt erstellen, um alle Quellcodes, Objektdateien, ausführbaren Dateien und relevanten Ressourcen zu speichern.

Um ein neues C++-Projekt zu erstellen:

  1. Wählen Sie das Menü „Datei“ ⇒ „Neu“ ⇒ Projekt… ⇒ C/C++ ⇒ C++ Projekt.
  2. Der Dialog „C++ Projekt“ öffnet sich.
    1. In das Feld „Projektname“ geben Sie „FirstProject“ ein.
    2. In der Box „Projekttypen“ wählen Sie „Ausführbar“ ⇒ „Leeres Projekt“.
    3. In der Box „Toolchains“ wählen Sie Ihren Compiler, z.B., „Cygwin GCC“ oder „MinGW GCC“ ⇒ Weiter.
  3. Der Dialog „Konfigurationen auswählen“ erscheint. Wählen Sie sowohl „Debug“ als auch „Release“ ⇒ Fertigstellen.
Schritt 2: Schreiben eines Hello-world C++ Programms
  1. Im „Project Explorer“ (ganz links) ⇒ Rechtsklick auf „FirstProject“ (oder über das Menü „Datei“) ⇒ Neu ⇒ Quelldatei.
  2. Der Dialog „Neue Quelldatei“ wird angezeigt.
    1. In das Feld „Quelldatei“ geben Sie „Hello.cpp“ ein.
    2. Klicken Sie auf „Fertigstellen“.
  3. Die Quelldatei „Hello.cpp“ öffnet sich im Editorbereich (ggf. durch Doppelklick auf „test.cpp“ öffnen). Geben Sie die folgenden Codes ein:
    #include <iostream>using namespace std; int main() { cout << "Hello, world!" << endl; return 0;}
Wenn „Unresolved Inclusion Error“

Wenn neben der Anweisung #include der Fehler „unresolved inclusion“ erscheint, sind die „include paths for headers“ nicht richtig gesetzt. Wählen Sie das Menü „Projekt“ ⇒ Eigenschaften ⇒ C/C++ Allgemein ⇒ Pfade und Symbole ⇒ Im Reiter „Includes“:

Für Cygwin GCC:

  1. „Fügen“ Sie die folgenden Verzeichnisse zu „GNU C“ hinzu, wobei $CYGWIN_HOME Ihr Cygwin-Installationsverzeichnis ist:
    • $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. „Füge“ die folgenden Verzeichnisse zu „GNU C++“ hinzu, wobei $CYGWIN_HOME dein Cygwin-Installationsverzeichnis ist:
    • $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

Für MinGW GCC:

  1. „Fügen“ Sie die folgenden Verzeichnisse zu „GNU C“ hinzu, wobei $MINGW_HOME Ihr MinGW-Installationsverzeichnis ist:
    • $MINGW_HOME\lib\gcc\mingw32.6.x\include
    • $MINGW_HOME\include
    • $MINGW_HOME\lib\gcc\mingw32.6.x\include-fixed
  2. „Add“ the following directories to „GNU C++“, where $MINGW_HOME is your Cygwin installed directory:
    • $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

Hinweis: Um die Header-Pfade zu finden, können Sie eine Suche nach Headern wie „stdio.h“ (für C) und „iostream“ (für C++) unter dem Cygwin- oder MinGW-Installationsverzeichnis suchen.

Hinweis: Wenn beim Linken ein „Fehler beim Laden von Shared Libraries“ auftritt. Installieren Sie „libmpfr4“ in Cygwin.
Schritt 3: Compile/Build

Klicken Sie mit der rechten Maustaste auf das „FirstProject“ (oder verwenden Sie das Menü „Projekt“) ⇒ wählen Sie „Projekt erstellen“, um das Programm zu kompilieren und zu linken.

Schritt 4: Ausführen

Um das Programm auszuführen, klicken Sie mit der rechten Maustaste auf „FirstProject“ (oder irgendwo auf den Quellcode „test.cpp„, oder wählen Sie das Menü „Ausführen“) ⇒ Ausführen als ⇒ Lokale C/C++-Anwendung ⇒ (Wenn Sie gefragt werden, wählen Sie den gdb-Debugger von Cygwin) ⇒ Die Ausgabe „Hallo, Welt!“ erscheint auf dem „Konsolen“-Feld.

HINWEIS: Sie müssen für JEDES Ihrer Programmierprobleme ein neues C++-Projekt erstellen. Das ist chaotisch beim Schreiben von Spielzeugprogrammen!

C-Programm

Befolgen Sie die gleichen Schritte wie oben. Erstellen Sie ein „C-Projekt“ (statt „C++-Projekt“). Probieren Sie das folgende „Hello-world“-Programm (mit dem Namen „Hello.c„) aus.

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

C++-Programm mit Makefile

In den vorherigen Beispielen haben wir das sogenannte managed-make verwendet, bei dem Eclipse automatisch ein Makefile zum Erstellen des Programms generiert. Wir können aber auch unser eigenes Makefile schreiben, um die vollständige Kontrolle über den Erstellungsprozess zu haben.

Schritt 1: Erstellen eines C++ Makefile-Projekts

Aus dem Menü „Datei“ ⇒ Neu ⇒ Projekt… ⇒ C/C++ ⇒ C++ Projekt ⇒ In „Projektname“ „HelloCppMakefile“ eingeben ⇒ Bei „Projekttyp“ wählen Sie „Makefile-Projekt“, „Leeres Projekt“ ⇒ Bei „Toolchains“ wählen Sie „Cygwin GCC“ oder „MinGW GCC“. Ignorieren Sie die Warnmeldung.

Schritt 2: Schreiben eines C++ Programms

Rechtsklick auf das Projekt ⇒ Neu ⇒ Quelldatei ⇒ In „Quelldatei“ geben Sie „Hello.cpp“ ⇒ Geben Sie folgende Quellcodes ein:

#include <iostream>using namespace std; int main() {cout << "Hello, world!" << endl;return 0;}
Schritt 3: Schreiben eines Makefiles

Klicken Sie mit der rechten Maustaste auf das Projekt ⇒ Neu ⇒ Datei ⇒ Geben Sie unter „Dateiname“ „makefile“ ein. ⇒ Geben Sie die folgenden Codes ein. Beachten Sie, dass Sie einen Tabulator (KEIN Leerzeichen) für den Einzug verwenden müssen.

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

Schritt 4: Erstellen Sie das Projekt

Klicken Sie mit der rechten Maustaste auf das Projekt ⇒ Projekt erstellen.

Schritt 5: Führen Sie das Programm aus

Klicken Sie mit der rechten Maustaste auf das Projekt ⇒ Ausführen als ⇒ Lokale C/C++ Anwendung.

Schreiben Sie ein Makefile, um Spielzeugprogramme unter einem Projekt zu kompilieren.

Lesen Sie die Dokumentation

Sie SOLLTEN zumindest das „Workbench User Guide“ und das „C/C++ Development User Guide“ von Eclipse durchlesen – zugänglich über die „Welcome“-Seite oder das „Help“-Menü von Eclipse. Dies wird Ihnen viele qualvolle Stunden ersparen, in denen Sie versuchen, herauszufinden, wie Sie einige Dinge später tun können.

Debugging von C/C++-Programmen in Eclipse CDT

Die Möglichkeit, einen Grafik-Debugger zum Debuggen von Programmen zu verwenden, ist beim Programmieren entscheidend. Es könnte Ihnen unzählige Stunden ersparen, zu raten, was schief gelaufen ist.

Schritt 0: Schreiben Sie ein C++-Programm – Das folgende Programm berechnet und druckt die Fakultät von n (=1*2*3*...*n). Das Programm hat jedoch einen logischen Fehler und liefert eine falsche Antwort für n=20 („The Factorial of 20 is -2102132736“ – eine negative Zahl?!).

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

Lassen Sie uns den grafischen Debugger verwenden, um das Programm zu debuggen.

Schritt 1: Setzen eines ersten Haltepunkts – Ein Haltepunkt unterbricht die Programmausführung, damit Sie die internen Zustände (z.B., Wert von Variablen) des Programms zu untersuchen. Bevor Sie den Debugger starten, müssen Sie mindestens einen Haltepunkt setzen, um die Ausführung innerhalb des Programms zu unterbrechen. Setzen Sie einen Haltepunkt bei der Funktion main(), indem Sie auf den linken Rand der Zeile doppelklicken, die main() enthält. Ein blauer Kreis erscheint am linken Rand und zeigt an, dass in dieser Zeile ein Haltepunkt gesetzt ist.

Schritt 2: Debugger starten – Rechtsklick auf das Projekt (oder über das Menü „Ausführen“) ⇒ „Debuggen als“ ⇒ „Lokale C/C++-Anwendung“ ⇒ „Ja“ wählen, um in die „Debug“-Perspektive zu wechseln (eine Perspektive ist eine bestimmte Anordnung von Panels, die für eine bestimmte Entwicklungsaufgabe wie Editieren oder Debuggen geeignet ist). Das Programm beginnt mit der Ausführung, hält aber am Haltepunkt, d.h. der main()Funktion, an.

Wie in der folgenden Abbildung dargestellt, zeigt die hervorgehobene Zeile (auf die auch ein blauer Pfeil zeigt) die Anweisung an, die im nächsten Schritt ausgeführt werden soll.

Schritt 3: Überspringen und Beobachten der Variablen und Ausgaben – Klicken Sie auf die Schaltfläche „Überspringen“ (oder wählen Sie „Überspringen“ aus dem Menü „Ausführen“), um Ihr Programm in Einzelschritten durchzugehen. Überprüfen Sie bei jedem Schritt den Wert der Variablen (im Feld „Variable“) und die von Ihrem Programm erzeugten Ausgaben (im Feld „Konsole“), falls vorhanden. Sie können auch Ihren Cursor auf eine beliebige Variable setzen, um den Inhalt der Variable zu untersuchen.

Das Programm in Einzelschritten zu durchlaufen und die Werte der internen Variablen und die erzeugten Ausgaben zu beobachten, ist das ultimative Mittel zur Fehlersuche in Programmen – denn es ist genau so, wie der Computer Ihr Programm ausführt!

Schritt 4: Haltepunkt, Run-To-Line, Resume und Terminate – Wie bereits erwähnt, unterbricht ein Haltepunkt die Programmausführung und ermöglicht es Ihnen, den internen Zustand des Programms zu untersuchen. Um einen Haltepunkt auf eine bestimmte Anweisung zu setzen, doppelklicken Sie auf den linken Rand dieser Zeile (oder wählen Sie „Haltepunkt umschalten“ aus dem Menü „Ausführen“).

„Fortsetzen“ setzt die Programmausführung fort, bis zum nächsten Haltepunkt oder bis zum Ende des Programms.

„Einzelschritt“ durch eine Schleife mit einer großen Anzahl ist zeitraubend. Sie können einen Haltepunkt an der Anweisung unmittelbar außerhalb der Schleife setzen (z.B. Zeile 12 des obigen Programms) und „Resume“ eingeben, um die Schleife zu beenden.

Alternativ können Sie den Cursor auf eine bestimmte Anweisung setzen und „Run-To-Line“ aus dem „Run“-Menü eingeben, um die Ausführung bis zu dieser Zeile fortzusetzen.

„Terminate“ beendet die Debugging-Sitzung. Beenden Sie die aktuelle Debugging-Sitzung immer mit „Terminate“ oder „Resume“ bis zum Ende des Programms.

Schritt 5: Zurück zur C/C++-Perspektive wechseln – Klicken Sie auf das Symbol für die „C/C++“-Perspektive in der oberen rechten Ecke, um zur weiteren Programmierung in die „C/C++“-Perspektive zu wechseln (oder Menü „Fenster“ ⇒ Perspektive öffnen ⇒ C/C++).

Ich kann nicht genug betonen, dass die Beherrschung des Debuggers für die Programmierung entscheidend ist. Erforschen Sie die von den Debuggern zur Verfügung gestellten Funktionen.

Weitere Funktionen des Debuggers

Ändern Sie den Wert einer Variablen: Sie können den Wert einer Variablen ändern, indem Sie einen neuen Wert in das Feld „Variable“ eingeben. Dies ist praktisch, um das Verhalten eines Programms vorübergehend zu ändern, ohne den Quellcode zu verändern.

Step-Into und Step-Return: Um eine Funktion zu debuggen, müssen Sie „Step-Into“ verwenden, um in die erste Anweisung der Methode einzusteigen. Mit „Step-Return“ können Sie an einer beliebigen Stelle innerhalb der Methode zum Aufrufer zurückkehren. Alternativ können Sie auch einen Haltepunkt innerhalb einer Methode setzen.

HINWEIS: Wenn Sie während des Debuggens die Fehlermeldung „Can’t find a source file at /cygdrive/c…“ erhalten, müssen Sie eine Zuordnung zwischen „/cygdrive/c“ und „c:/“ konfigurieren (unter der Annahme, dass Ihr Programm im Laufwerk c gespeichert ist. ⇒ „Debug“ ⇒ „Common Source Lookup Path“, wählen Sie „Add“ ⇒ „Path Mapping“.

Tipps & Tricks

Lesen Sie die Tipps & Tricks von Eclipse for Java für allgemeine Tipps zur Verwendung von Eclipse.

C/C++ Softwareentwicklung mit GCC

  1. Die Befehle, die in Eclipse CDT für die Erstellung des Projekts verwendet werden, finden Sie unter „<workspace>\.metadata\.plugins\org.eclipse.cdt.ui\global-build.log„.
  2. Einstellen von Include-Pfaden, Library-Pfaden und Bibliotheken: Beim Erstellen des Programms benötigt der Compiler die Header-Dateien, um die Quellcodes zu kompilieren; der Linker benötigt die Bibliotheken, um externe Referenzen aufzulösen. Der Compiler sucht in den „include-paths“ nach den in #include-Direktiven angegebenen Headern. Der Linker sucht in den „library-paths“ nach „Bibliotheken“, die zum Linken des Programms benötigt werden. Im GCC wird der „include-path“ über die Option -Idir oder die Umgebungsvariable CPATH angegeben. Der library-path wird über die Option -Ldir oder die Umgebungsvariable LIBRARY_PATH angegeben. Die Bibliothek libxxx.a wird über die Option -lxxx (Kleinbuchstabe 'l', ohne Präfix lib und .a-Erweiterung) angegeben.
    In Eclipse CDT können Sie die Include-Pfade, Bibliothekspfade und Bibliotheken durch Rechtsklick auf das Projekt ⇒ Eigenschaften ⇒ C/C++ Allgemein ⇒ Pfade und Symbole ⇒ unter den Reitern „Includes“, „Bibliothekspfade“ und „Bibliotheken“ einstellen. Die Einstellungen gelten nur für das ausgewählte Projekt.
    Um die Include- und Bibliothekspfade für alle Projekte zu setzen, setzen Sie die Umgebungsvariablen CPATH und LIBRARY_PATH. In Eclipse wählen Sie „Window“ ⇒ Preferences ⇒ C/C++ ⇒ Build ⇒ Environment.
    Alternativ kopieren Sie die Header und Bibliotheken in Systemverzeichnisse, und Sie können die Include-Pfade und Library-Pfade weglassen.
  3. OpenGL mit GLUT: Für Cygwin müssen Sie gcc, g++, gdb, make (unter der Kategorie Devel) und opengl, freeglut (unter der Kategorie graphics) installieren. Die Header gl.h, glu.h, glut.h sind in $cygwin\usr\include\w32api\GL enthalten. Verwenden Sie #include <GL/gl__.h>, um die Header einzubinden. Die Bibliotheken libopengl32.a libglu32.a und libglut32.a befinden sich in $cygwin\lib\w32api. Um diese Bibliotheken beim Linken anzugeben, verwenden Sie die Optionen -lopengl32 -lglu32 -lglut32 (ohne das Präfix lib und die Erweiterung .a).
  4. OpenGL mit SDL: Laden Sie SDL von http://www.libsdl.org herunter. Wählen Sie Development Libraries ⇒ win32 ⇒ mingw32 ⇒ Unzip. Kopieren Sie das Header-Verzeichnis SDL (unter include) nach $cygwin\usr\include\w32api; kopieren Sie alle Bibliotheksdateien in lib nach $cygwin\lib\w32api; kopieren Sie die Laufzeitbibliothek SDL.dll (unter bin) nach Windows/System32. Fügen Sie diese beiden Header in Ihr Programm ein: #include <SDL/sdl.h> und #include <SDL/sdl_opengl.h>. Zum Linken fügen Sie diese Bibliotheken hinzu: -lSDL -lSDLmain.
  5. #pragma-Kommentar-Direktive: Die pragma-Kommentar-Direktive, z. B. #pragma comment(lib, "opengl32.lib"), wird oft verwendet, um eine bestimmte Bibliothek einzubinden (wie die Option -l). Diese systemabhängige Direktive funktioniert im Windows-Compiler, aber NICHT im GCC.
  6. Fehler „multiple target patterns“: Es gibt ein Problem mit GNU make (bei $Cygwin\bin\make.exe). Ersetzt durch diese Kopie @ http://www.cmake.org/files/cygwin/make.exe.
  7. fflush(stdout): Die gcc-Bibliothek verwendet gepufferte E/A (in Übereinstimmung mit der C-Spezifikation). Die Ausgabe wird erst nach einem Zeilenumbruch in den Ausgabestrom geschrieben. Sie können die Ausgabe mit einem fflush().
  8. Der Projektname darf das Wort „setup“ nicht enthalten: Wenn Sie Ihr C/C++-Projekt mit einem Namen benennen, der das Wort „setup“ enthält, dann wird das daraus resultierende „*setup*.exe“ die UAC (User Authorization Control) auslösen und Administratorrechte zur Ausführung erfordern. (Es hat mich einige Stunden gekostet, das herauszufinden! Versuchen Sie, ein „hello.exe“ in „mysetup.exe“ umzubenennen.)

File I/O in Eclipse

Reference to Eclipse for Java’s File IO.

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Archive

  • Januar 2022
  • Dezember 2021
  • November 2021
  • Oktober 2021
  • September 2021

Meta

  • Anmelden
  • Feed der Einträge
  • Kommentare-Feed
  • 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