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。