xtd("extend"로 발음)는 Microsoft Windows, Apple macOS, Linux, iOS 및 android(*)에서 콘솔, GUI(WinForms와 같은 형식) 및 단위 테스트 애플리케이션을 생성하기 위한 최신 C++17/20 프레임워크입니다.
(*) 자세한 내용은 이식성을 참조하세요.
xtd는 여러 라이브러리로 구성됩니다.
xtd.core 라이브러리는 시스템 기능에 대한 액세스를 제공하는 클래스, 인터페이스 및 값 유형의 최신 C++17/20 라이브러리입니다. 이는 C++ 애플리케이션, 구성 요소 및 컨트롤이 구축되는 기반입니다.
xtd.드로잉 라이브러리에는 기본 GDI+ 그래픽 기능을 지원하는 유형이 포함되어 있습니다. 하위 네임스페이스는 고급 2차원 및 벡터 그래픽 기능, 고급 이미징 기능, 인쇄 관련 및 인쇄 서비스를 지원합니다. 하위 네임스페이스에는 디자인 타임 사용자 인터페이스 논리와 그리기를 확장하는 형식도 포함되어 있습니다.
xtd.forms 라이브러리에는 Microsoft Windows, Apple macOS 및 Linux 기반 운영 체제에서 사용할 수 있는 풍부한 사용자 인터페이스 기능을 최대한 활용하는 Windows 기반 애플리케이션을 생성하기 위한 클래스가 포함되어 있습니다.
xtd.tunit 라이브러리는 Microsoft.VisualStudio.TestTools.Cpp에서 영감을 받은 최신 C++17/20용 단위 테스트 프레임워크입니다.
이 프로젝트는 오픈 소스 프로젝트입니다. 참여하는 개발자는 각자의 시간에 작업을 수행합니다. 따라서 실제 날짜를 수정하는 것은 어렵습니다.
그러나 개발의 진화를 따라갈 수 있습니다. 우리는 상태를 최신 상태로 유지합니다.
각 커밋에서 다음 구성에 대해 빌드 및 단위 테스트가 수행됩니다.
운영 체제 | 디버그 | 풀어 주다 |
---|---|---|
윈도우(x64) | ||
윈도우(x86) | ||
macOS | ||
우분투 | ||
아이폰 OS (**) | ||
안드로이드(**) |
(**) xtd.core 및 xtd.tunit에만 해당.
GitHub 페이지에 배포 | 상태 |
---|---|
웹사이트 배포 | |
최신 참조 가이드 배포 |
xtd는 Kanban 프로젝트에 의해 관리되므로 미해결 문제의 수가 상당히 많을 수 있습니다. 아래 표는 열려 있는 버그/질문 및 개선 사항의 수를 보다 명확하게 보여줍니다.
문제 | 열려 있는 | 닫은 |
---|---|---|
사용자의 버그/질문 | ||
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에서)
계산기 (우분투)
스톱워치(Windows)
그림 (우분투에서)
저자 파일에는 연락처 정보와 함께 기여자가 나열되어 있습니다. 기여하신다면 목록에 자신을 추가해 주세요.
귀하의 기여를 환영합니다.
귀하의 피드백은 프로젝트 발전에 중요합니다.
다음 프로젝트는 초보자가 첫 번째 기여를 하는 방식을 단순화하고 안내하는 것을 목표로 합니다. 첫 번째 기여를 하려는 경우 아래 프로젝트를 확인하세요.
첫 번째 기여
이제 xtd에 첫 번째 기여를 할 준비가 되었습니다.
© 2024 감마소프트.