xtd (pronunciado "extender") es un marco C++ 17/20 moderno para crear aplicaciones de consola, GUI (formularios como WinForms) y pruebas unitarias en Microsoft Windows, Apple macOS, Linux, iOS y Android (*).
(*) Ver portabilidad para más información.
xtd se compone de varias bibliotecas.
La biblioteca xtd.core son bibliotecas C++ 17/20 modernas de clases, interfaces y tipos de valores que brindan acceso a la funcionalidad del sistema. Es la base sobre la que se construyen las aplicaciones, los componentes y los controles de C++.
La biblioteca xtd.drawing contiene tipos que admiten la funcionalidad básica de gráficos GDI+. Los espacios de nombres secundarios admiten funciones avanzadas de gráficos vectoriales y bidimensionales, funciones avanzadas de imágenes y servicios tipográficos y relacionados con la impresión. Un espacio de nombres secundario también contiene tipos que amplían la lógica y el dibujo de la interfaz de usuario en tiempo de diseño.
La biblioteca xtd.forms contiene clases para crear aplicaciones basadas en Windows que aprovechan al máximo las funciones de interfaz de usuario enriquecidas disponibles en los sistemas operativos base Microsoft Windows, Apple macOS y Linux.
La biblioteca xtd.tunit es un marco de pruebas unitarias para C++ 17/20 moderno, inspirado en Microsoft.VisualStudio.TestTools.Cpp.
Este proyecto es un proyecto de código abierto. Los desarrolladores que participan lo hacen en su propio tiempo. Por tanto, es difícil fijar fechas de lanzamiento.
Pero puedes seguir la evolución del desarrollo. Mantenemos el estado actualizado.
En cada confirmación, se realizan una compilación y pruebas unitarias para las siguientes configuraciones:
Sistema operativo | Depurar | Liberar |
---|---|---|
Ventanas (x64) | ||
Ventanas (x86) | ||
macos | ||
ubuntu | ||
iOS (**) | ||
Androide (**) |
(**) Solo xtd.core y xtd.tunit.
Implementar en páginas de GitHub | estado |
---|---|
Despliegue del sitio web | |
Implementación de la última guía de referencia. |
Como xtd se gestiona mediante un proyecto Kanban, la cantidad de problemas abiertos puede ser bastante grande. La siguiente tabla ofrece una visión más clara del número de errores/preguntas abiertas y mejoras.
Asuntos | Abierto | Cerrado |
---|---|---|
Errores/Preguntas de los usuarios | ||
xtd 0.1.0 - Mejoras / Desarrollos (*) | ||
xtd 0.1.1 - Mejoras / Desarrollos | ||
xtd 0.2.0 - Mejoras / Desarrollos | ||
xtd 0.3.0 - Mejoras / Desarrollos | ||
xtd 0.4.0 - Mejoras / Desarrollos | ||
xtd 1.0.0 - Mejoras / Desarrollos |
(*) Sólo hay una mejora para xtd 0.1.0, ya que la gestión de proyectos aún no estaba disponible.
La primera aplicación clásica '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! " );
}
o simplemente
# 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)
Abra "Símbolo del sistema" o "Terminal". Navegue hasta la carpeta que contiene el proyecto y escriba lo siguiente:
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 {});
}
o simplemente
# 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)
Abra "Símbolo del sistema" o "Terminal". Navegue hasta la carpeta que contiene el proyecto y escriba lo siguiente:
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 ();
}
o sin ayudantes
# 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)
Abra "Símbolo del sistema" o "Terminal". Navegue hasta la carpeta que contiene el proyecto y escriba lo siguiente:
xtdc run
Buscaminas (en Windows)
juego_de_vida (en macOS)
xtdc-gui: crea un nuevo proyecto (en macOS)
calculadora (en Ubuntu)
cronómetro (en Windows)
pintura (en Ubuntu)
El archivo de autores enumera los contribuyentes junto con la información de contacto. Si realiza una contribución, agréguese a la lista.
Sus contribuciones son bienvenidas.
Tus comentarios son importantes para la evolución del proyecto.
El siguiente proyecto tiene como objetivo simplificar y guiar la forma en que los principiantes hacen su primera contribución. Si está buscando hacer su primera contribución, consulte el proyecto a continuación.
Primeras contribuciones
Ahora estás listo para hacer tu primera contribución a xtd.
© 2024 Gammasoft.