xtd (prononcé "extend") est un framework C++ 17/20 moderne permettant de créer des applications de console, d'interface graphique (formulaires comme WinForms) et de tests unitaires sur Microsoft Windows, Apple macOS, Linux, iOS et Android (*).
(*) Voir portabilité pour plus d'informations.
xtd est composé de plusieurs bibliothèques.
La bibliothèque xtd.core est une bibliothèque C++ 17/20 moderne de classes, d'interfaces et de types de valeur qui donnent accès aux fonctionnalités du système. Il s'agit de la base sur laquelle sont construits les applications, les composants et les contrôles C++.
La bibliothèque xtd.drawing contient des types qui prennent en charge les fonctionnalités graphiques GDI+ de base. Les espaces de noms enfants prennent en charge les fonctionnalités avancées de graphiques bidimensionnels et vectoriels, les fonctionnalités d'imagerie avancées et les services liés à l'impression et typographiques. Un espace de noms enfant contient également des types qui étendent la logique et le dessin de l’interface utilisateur au moment de la conception.
La bibliothèque xtd.forms contient des classes permettant de créer des applications basées sur Windows qui tirent pleinement parti des riches fonctionnalités de l'interface utilisateur disponibles dans les systèmes d'exploitation de base Microsoft Windows, Apple macOS et Linux.
La bibliothèque xtd.tunit est un framework de tests unitaires pour le C++ 17/20 moderne, inspiré de Microsoft.VisualStudio.TestTools.Cpp.
Ce projet est un projet open source. Les développeurs qui participent le font pendant leur temps libre. Il est donc difficile de fixer des dates de réalisation.
Mais vous pouvez suivre l'évolution du développement. Nous maintenons le statut à jour.
A chaque commit, un build et des tests unitaires sont effectués pour les configurations suivantes :
Système opérateur | Déboguer | Libérer |
---|---|---|
Windows (x64) | ||
Windows (x86) | ||
macOS | ||
Ubuntu | ||
iOS (**) | ||
Android (**) |
(**) xtd.core et xtd.tunit uniquement.
Déployer sur les pages GitHub | statut |
---|---|
Déploiement du site internet | |
Déploiement du dernier référentiel |
Comme xtd est géré par un projet Kanban, le nombre de tickets ouverts peut être assez important. Le tableau ci-dessous donne une vue plus claire du nombre de bugs/questions ouverts et d'améliorations.
Problèmes | Ouvrir | Fermé |
---|---|---|
Bugs / Questions des utilisateurs | ||
xtd 0.1.0 - Améliorations / Développements (*) | ||
xtd 0.1.1 - Améliorations / Développements | ||
xtd 0.2.0 - Améliorations / Développements | ||
xtd 0.3.0 - Améliorations / Développements | ||
xtd 0.4.0 - Améliorations / Développements | ||
xtd 1.0.0 - Améliorations / Développements |
(*) Il n'y a qu'une seule amélioration pour xtd 0.1.0, car la gestion de projet n'était pas encore disponible.
La première application classique « 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! " );
}
ou simplement
# 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)
Ouvrez « Invite de commandes » ou « Terminal ». Accédez au dossier contenant le projet et saisissez ce qui suit :
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 {});
}
ou simplement
# 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)
Ouvrez « Invite de commandes » ou « Terminal ». Accédez au dossier contenant le projet et saisissez ce qui suit :
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 ();
}
ou sans aide
# 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)
Ouvrez « Invite de commandes » ou « Terminal ». Accédez au dossier contenant le projet et saisissez ce qui suit :
xtdc run
dragueur de mines (sous Windows)
game_of_life (sur macOS)
xtdc-gui - Créer un nouveau projet (sur macOS)
calculatrice (sur Ubuntu)
chronomètre (sous Windows)
peinture (sur Ubuntu)
Le fichier des auteurs répertorie les contributeurs ainsi que leurs coordonnées. Si vous apportez une contribution, veuillez vous ajouter à la liste.
Vos contributions sont les bienvenues.
Vos retours sont importants pour l’évolution du projet.
Le projet suivant vise à simplifier et à guider la manière dont les débutants apportent leur première contribution. Si vous souhaitez apporter votre première contribution, consultez le projet ci-dessous.
Premières contributions
Vous êtes maintenant prêt à apporter votre première contribution à xtd.
© 2024 Gammasoft.