xtd (ausgesprochen „extend“) ist ein modernes C++17/20-Framework zum Erstellen von Konsolen-, GUI- (Formularen wie WinForms) und Unit-Test-Anwendungen auf Microsoft Windows, Apple macOS, Linux, iOS und Android (*).
(*) Weitere Informationen finden Sie unter Portabilität.
xtd besteht aus mehreren Bibliotheken.
Bei der xtd.core-Bibliothek handelt es sich um moderne C++17/20-Bibliotheken mit Klassen, Schnittstellen und Werttypen, die Zugriff auf Systemfunktionen ermöglichen. Es ist die Grundlage, auf der C++-Anwendungen, -Komponenten und -Steuerelemente aufgebaut sind.
Die xtd.drawing-Bibliothek enthält Typen, die grundlegende GDI+-Grafikfunktionen unterstützen. Untergeordnete Namespaces unterstützen erweiterte zweidimensionale und Vektorgrafikfunktionen, erweiterte Bildfunktionen sowie druckbezogene und typografische Dienste. Ein untergeordneter Namespace enthält auch Typen, die die Logik und Zeichnung der Benutzeroberfläche zur Entwurfszeit erweitern.
Die xtd.forms-Bibliothek enthält Klassen zum Erstellen von Windows-basierten Anwendungen, die die umfangreichen Benutzeroberflächenfunktionen der Basisbetriebssysteme Microsoft Windows, Apple macOS und Linux voll ausnutzen.
Die xtd.tunit-Bibliothek ist ein Unit-Test-Framework für modernes C++ 17/20, inspiriert von Microsoft.VisualStudio.TestTools.Cpp.
Dieses Projekt ist ein Open-Source-Projekt. Die teilnehmenden Entwickler tun dies in ihrer Freizeit. Daher ist es schwierig, tatsächliche Termine festzulegen.
Aber Sie können die Entwicklung der Entwicklung verfolgen. Wir halten den Status aktuell.
Bei jedem Commit werden ein Build und Unit-Tests für die folgenden Konfigurationen durchgeführt:
Betriebssystem | Debuggen | Freigeben |
---|---|---|
Windows (x64) | ||
Windows (x86) | ||
macOS | ||
Ubuntu | ||
iOS (**) | ||
Android (**) |
(**) Nur xtd.core und xtd.tunit.
Auf GitHub-Seiten bereitstellen | Status |
---|---|
Bereitstellung der Website | |
Bereitstellung des neuesten Referenzhandbuchs |
Da xtd von einem Kanban-Projekt verwaltet wird, kann die Anzahl offener Probleme recht groß sein. Die folgende Tabelle gibt einen klareren Überblick über die Anzahl offener Fehler/Fragen und Verbesserungen.
Probleme | Offen | Geschlossen |
---|---|---|
Fehler / Fragen von Benutzern | ||
xtd 0.1.0 – Verbesserungen/Entwicklungen (*) | ||
xtd 0.1.1 – Verbesserungen/Entwicklungen | ||
xtd 0.2.0 – Verbesserungen/Entwicklungen | ||
xtd 0.3.0 – Verbesserungen/Entwicklungen | ||
xtd 0.4.0 – Verbesserungen/Entwicklungen | ||
xtd 1.0.0 – Verbesserungen/Entwicklungen |
(*) Für xtd 0.1.0 gibt es nur eine Erweiterung, da Projektmanagement noch nicht verfügbar war.
Die klassische Erstanwendung „Hello World“.
# include < xtd/xtd >
using namespace xtd ;
auto main () -> int {
console::background_color (console_color::blue);
console::foreground_color (console_color::white);
console::write_line ( " Hello, World! " );
}
oder einfach
# include < xtd/xtd >
using namespace xtd ;
auto main () -> int {
console::out << background_color (console_color::blue) << foreground_color (console_color::white) << " Hello, World! " << environment::new_line;
}
cmake_minimum_required ( VERSION 3.20)
project (hello_world_console)
find_package (xtd REQUIRED)
add_sources(hello_world_console.cpp)
target_type(CONSOLE_APPLICATION)
Öffnen Sie „Eingabeaufforderung“ oder „Terminal“. Navigieren Sie zu dem Ordner, der das Projekt enthält, und geben Sie Folgendes ein:
xtdc run
# include < xtd/xtd >
using namespace xtd ::forms ;
class main_form : public form {
public:
main_form () {
text ( " Hello world (message_box) " );
button1. location ({ 10 , 10 });
button1. parent (* this );
button1. text ( " &Click me " );
button1. click += [] {
message_box::show ( " Hello, World! " );
};
}
private:
button button1;
};
auto main () -> int {
application::run (main_form {});
}
oder einfach
# include < xtd/xtd >
auto main () -> int {
auto main_form = xtd::forms::form::create ( " Hello world (message_box) " );
auto button1 = xtd::forms::button::create (main_form, " &Click me " , { 10 , 10 });
button1. click += [] { xtd::forms::message_box::show ( " Hello, World! " );};
xtd::forms::application::run (main_form);
}
cmake_minimum_required ( VERSION 3.20)
project (hello_world_forms)
find_package (xtd REQUIRED)
add_sources(hello_world_forms.cpp)
target_type(GUI_APPLICATION)
Öffnen Sie „Eingabeaufforderung“ oder „Terminal“. Navigieren Sie zu dem Ordner, der das Projekt enthält, und geben Sie Folgendes ein:
xtdc run
# include < xtd/xtd >
using namespace xtd ;
using namespace xtd ::tunit ;
namespace unit_tests {
class test_class_ (hello_world_test) {
void test_method_ (create_string_from_literal) {
auto s = string { " Hello, World! " };
valid::are_equal ( 13 , s. size ());
assert::are_equal ( " Hello, World! " , s);
}
void test_method_ (create_string_from_chars) {
auto s = string { ' H ' , ' e ' , ' l ' , ' l ' , ' o ' , ' , ' , ' ' , ' W ' , ' o ' , ' r ' , ' l ' , ' d ' , ' ! ' };
valid::are_equal ( 13 , s. size ());
string_assert::starts_with ( " Hello, " , s);
string_assert::ends_with ( " World! " , s);
}
};
}
auto main () -> int {
return console_unit_test (). run ();
}
oder ohne Helfer
# include < xtd/xtd >
using namespace xtd ;
using namespace xtd ::tunit ;
namespace unit_tests {
class hello_world_test ;
auto hello_world_test_class_attr = test_class_attribute { " unit_tests::hello_world_test " };
class hello_world_test : public test_class {
test_method_attribute create_string_from_literal_attr { " create_string_from_literal " , * this , &hello_world_test::create_string_from_literal};
void create_string_from_literal () {
auto s = string { " Hello, World! " };
valid::are_equal ( 13 , s. size ());
assert::are_equal ( " Hello, World! " , s);
}
test_method_attribute create_string_from_chars_attr { " create_string_from_chars " , * this , &hello_world_test::create_string_from_chars};
void create_string_from_chars () {
auto s = string { ' H ' , ' e ' , ' l ' , ' l ' , ' o ' , ' , ' , ' ' , ' W ' , ' o ' , ' r ' , ' l ' , ' d ' , ' ! ' };
valid::are_equal ( 13 , s. size ());
string_assert::starts_with ( " Hello, " , s);
string_assert::ends_with ( " World! " , s);
}
};
}
auto main () -> int {
return console_unit_test (). run ();
}
cmake_minimum_required ( VERSION 3.20)
project (hello_world_test)
find_package (xtd REQUIRED)
add_sources(hello_world_test.cpp)
target_type(TEST_APPLICATION)
Öffnen Sie „Eingabeaufforderung“ oder „Terminal“. Navigieren Sie zu dem Ordner, der das Projekt enthält, und geben Sie Folgendes ein:
xtdc run
Minensuchboot (unter Windows)
game_of_life (auf macOS)
xtdc-gui – Neues Projekt erstellen (unter macOS)
Taschenrechner (auf Ubuntu)
Stoppuhr (unter Windows)
Malen (auf Ubuntu)
Die Autorendatei listet die Mitwirkenden zusammen mit Kontaktinformationen auf. Wenn Sie einen Beitrag leisten, tragen Sie sich bitte in die Liste ein.
Ihre Beiträge sind willkommen.
Ihr Feedback ist wichtig für die Entwicklung des Projekts.
Das folgende Projekt zielt darauf ab, die Art und Weise, wie Anfänger ihren ersten Beitrag leisten, zu vereinfachen und anzuleiten. Wenn Sie Ihren ersten Beitrag leisten möchten, schauen Sie sich das Projekt unten an.
Erste Beiträge
Jetzt sind Sie bereit, Ihren ersten Beitrag zu xtd zu leisten.
© 2024 Gammasoft.