xtd (произносится как «расширить») — это современная платформа C++17/20 для создания консольных, графических приложений (форм, таких как WinForms) и приложений модульного тестирования в Microsoft Windows, Apple macOS, Linux, iOS и Android (*).
(*) Дополнительную информацию см. в разделе «Переносимость».
xtd состоит из нескольких библиотек.
Библиотека xtd.core — это современные C++17/20 библиотеки классов, интерфейсов и типов значений, которые обеспечивают доступ к функциям системы. Это основа, на которой строятся приложения, компоненты и элементы управления C++.
Библиотека xtd.drawing содержит типы, поддерживающие базовые графические функции GDI+. Дочерние пространства имен поддерживают расширенные функции двумерной и векторной графики, расширенные функции обработки изображений, а также службы печати и типографики. Дочернее пространство имен также содержит типы, которые расширяют логику и рисование пользовательского интерфейса во время разработки.
Библиотека xtd.forms содержит классы для создания приложений на базе Windows, которые в полной мере используют преимущества богатых функций пользовательского интерфейса, доступных в базовых операционных системах Microsoft Windows, Apple macOS и Linux.
Библиотека xtd.tunit — это платформа модульного тестирования для современного C++17/20, созданная на основе Microsoft.VisualStudio.TestTools.Cpp.
Этот проект является проектом с открытым исходным кодом. Разработчики, которые участвуют, делают это в свое свободное время. Поэтому трудно установить реальные даты.
Но вы можете следить за эволюцией развития. Мы поддерживаем статус в актуальном состоянии.
При каждом коммите выполняются сборка и модульные тесты для следующих конфигураций:
Операционная система | Отлаживать | Выпускать |
---|---|---|
Windows (x64) | ||
Windows (x86) | ||
macOS | ||
Убунту | ||
iOS (**) | ||
Андроид (**) |
(**) Только xtd.core и xtd.tunit.
Развертывание на страницах GitHub | статус |
---|---|
Развертывание веб-сайта | |
Развертывание последней версии справочного руководства |
Поскольку xtd управляется проектом Канбан, количество открытых проблем может быть довольно большим. Таблица ниже дает более четкое представление о количестве открытых ошибок/вопросов и улучшений.
Проблемы | Открыть | Закрыто |
---|---|---|
Баги/Вопросы пользователей | ||
xtd 0.1.0 — Улучшения/развития (*) | ||
xtd 0.1.1 — Улучшения/Развития | ||
xtd 0.2.0 — Улучшения/Развития | ||
xtd 0.3.0 — Улучшения/Развития | ||
xtd 0.4.0 — Улучшения/Развития | ||
xtd 1.0.0 — Улучшения/Развития |
(*) В xtd 0.1.0 имеется только одно улучшение, поскольку управление проектами еще не было доступно.
Классическое первое приложение «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! " );
}
или просто
# 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)
Откройте «Командную строку» или «Терминал». Перейдите в папку, содержащую проект, и введите следующее:
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 {});
}
или просто
# 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)
Откройте «Командную строку» или «Терминал». Перейдите в папку, содержащую проект, и введите следующее:
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 ();
}
или без помощников
# 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)
Откройте «Командную строку» или «Терминал». Перейдите в папку, содержащую проект, и введите следующее:
xtdc run
тральщик (в Windows)
game_of_life (на macOS)
xtdc-gui — создать новый проект (в macOS)
калькулятор (в Ubuntu)
секундомер (в Windows)
рисование (в Ubuntu)
В файле авторов перечислены участники вместе с контактной информацией. Если вы внесете свой вклад, пожалуйста, добавьте себя в список.
Ваш вклад приветствуется.
Ваши отзывы важны для развития проекта.
Целью следующего проекта является упрощение и руководство по тому, как новички могут внести свой первый вклад. Если вы хотите внести свой первый вклад, ознакомьтесь с проектом ниже.
Первые взносы
Теперь вы готовы внести свой первый вклад в xtd.
© 2024 Гаммасофт.