xtd(发音为“extend”)是一个现代 C++17/20 框架,用于在 Microsoft Windows、Apple macOS、Linux、iOS 和 android (*) 上创建控制台、GUI(如 WinForms 形式)和单元测试应用程序。
(*) 有关详细信息,请参阅可移植性。
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 Gammasoft。