728x90
반응형
728x90
반응형
반응형

qmake2cmake 소개

Qt의 자체 QMake 프로젝트 파일은 qtbase 에 있는 pro2cmake 라는 Python 스크립트로 변환되었습니다. 이 스크립트는 Qt 저장소의 프로젝트를 변환하기 위해 특별히 제작되었으며 사용자 프로젝트를 변환하는 데 거의 유용하지 않습니다.

우리는 이 스크립트를 분기하여 당신의 프로젝트를 위한 변환기로 바꾸었습니다 : qmake2cmake 에게 인사하세요!

그게 뭐죠?

qmake2cmake 도구는 CMakeLists.txt를 생성합니다. CMakeLists.txt는 변환된 .pro 파일의 대부분의 공통적인 속성을 포함합니다.

생성된 CMake 프로젝트는 기준선(baseline)으로 사용할 수 있으며 수동 조정이 필요할 가능성이 큽니다.

변환할 수 없는 QMake 구성은 CMake 프로젝트에서 주석으로 끝납니다.

이러한 주석은 이러한 비트를 수동으로 변환할 때 유용합니다.

많은 프로젝트에는 하나 이상의 .pro 파일이 있습니다.

QMake SUBDIRS 계층의 qmake2cmake_all 경우 프로젝트의 루트 디렉토리에서 작동하고 그 아래의 모든 것을 변환하는 것이 있습니다.

Qt 자체의 경우 변환 속도는 무시할 수 없는 측면이었습니다.

이것이 qmake2cmake_all 하위 프로젝트의 변환을 병렬화하는 이유입니다.

하지 않는 것

변환되지 않은 몇 가지 QMake 구성이 있습니다.

  • TEMPLATE = aux 프로젝트
  • 사용자 정의 .prf 파일
  • 추가 컴파일러
  • 추가 타겟(target)

이 모든 것은 수동으로 변환해야 합니다.

어디서 얻나요?

qmake2cmake 설치는 다음과 같이 간단합니다.

python -m pip install qmake2cmake

소스 코드를 원하면 리포지토리를 복제합니다.

git clone git://code.qt.io/qt/qmake2cmake.git

요구 사항 및 추가 설치 세부 정보는 README.md를 참조하십시오.

사용 방법?

전체 프로젝트 트리를 변환하려면 프로젝트 디렉토리를 qmake2cmake_all 다음과 같이 전달하십시오.

qmake2cmake_all ~/projects/myapp --min-qt-version 6.3

프로젝트를 빌드할 가장 낮은 Qt 버전을 지정해야 합니다. 그러면 Qt 버전에 적합한 CMake API가 선택됩니다.

이 매개변수를 모든 호출에 전달하지 않으려면 QMAKE2CMAKE_MIN_QT_VERSION 환경 변수를 설정할 수 있습니다.

다음 호출은 단일 QMake 프로젝트 파일을 CMake로 변환합니다.

qmake2cmake ~/projects/myapp/myapp.pro

기본적으로 CMakeLists.txt는 파일 옆에 배치 .pro 됩니다.

다른 위치에서 생성하려면 다음 옵션을 사용하세요.

qmake2cmake ~/projects/myapp/myapp.pro -o ~/projects/myapp-converted/CMakeLists.txt
728x90
반응형
반응형

2022년 Qt 로드맵

Qt 6.2는 2021년 9월 에 릴리스되어 Qt 6 시리즈 내에서 첫 번째 LTS(장기 지원) 버전을 제공합니다. Qt 6.3이 마무리 단계에 접어들면서 Qt 제품의 다음 단계가 무엇인지 생각해 볼 좋은 시간입니다.

그러나 먼저, 우리 커뮤니티의 강력한 지원 없이는 여기까지 오지 못했을 것이라는 점을 밝히는 것이 중요합니다. 기고, 보고서 및 메일링 목록 토론은 Qt Company에 다양한 관점을 제공하고 공통 요구 사항을 향해 나아가며 개선해야 할 가장 큰 영역을 다루는 데 똑같이 유익합니다. Qt의 각 버전을 이전보다 더 나은 버전으로 만드는 데 도움을 주신 모든 분들께 감사드립니다. 이 포스트에서는 주로 Qt를 위한 Qt Company의 노력에 초점을 맞출 것입니다. 생태계의 기업뿐만 아니라 개인 기여자로부터 오는 많은 추가 항목이 있습니다.

플랫폼을 대표하는 Qt를 사용하면 포트폴리오 내에서 개별 자산을 식별하기 어려울 때가 있습니다. Qt를 사용하면 데스크탑에서 시작하여 모바일을 통해 하위 수준의 임베디드 프로젝트로 이동하는 모든 종류의 솔루션을 만들 수 있습니다. MCU용 Qt를 통해 마이크로컨트롤러 솔루션도 가능합니다 . Qt는 솔루션 생성을 지원하는 많은 도구와 함께 제공됩니다. Qt Design Studio 를 사용한 2D 및 3D 사용자 인터페이스 구성으로 시작하여 Qt Creator 또는 다른 IDE 통합 중 하나에서 개발 하고 최근에는 Froglogic 제품 과 함께 QA 도구를 사용 하여 전체 소프트웨어 개발 수명 주기를 다룹니다.

이 블로그 게시물에서는 프레임워크 기능에 중점을 둘 것입니다. 이것은 Qt로 만들 수 있는 제품에 대한 새로운 기능에 대한 좋은 개요를 제공합니다. 툴링 관련 제품의 경우 후속 기사를 제공할 것입니다.

전체 스펙트럼 에 걸친 추가

모든 대상 플랫폼에 유사하게 도움이 되는 추가 사항부터 시작하겠습니다. 가장 많이 사용되는 모듈을 Qt 6으로 마이그레이션한 후 여기서 멈추지 않습니다. 우리는 모든 각도, 고객 및 커뮤니티의 피드백을 듣고 있습니다. 결과적으로, 우리는 아직 구할 수 없는 항목에 대해 조사했고 계속 투자할 것입니다.

Qt 6.3의 경우 Qt PDF 가 이식되었으며 처음에는 모든 사람이 사용할 수 있습니다. 마찬가지로 Qt Speech 는 현재 작업 중이며 이후 단계에서 재도입을 볼 수 있습니다.

또한 Qt Location 은 이미 우리가 매우 감사하는 Lauri Laanmets 로부터 주요 업데이트를 받고 있습니다. 이러한 변화는 해당 분야에서 지속적으로 노력할 수 있는 큰 원동력입니다. 고객 및 오픈소스 사용자들과의 다양한 논의 끝에 지도 시각화 솔루션의 범위 설정을 마쳤습니다. 이 분야의 노력은 올해 하반기에도 계속될 것입니다. 이 주제는 댓글 섹션에서 다소 자주 언급되었으므로 전용 게시물을 올릴 가치가 있으며 곧 후속 조치를 취하겠습니다.

개별 모듈에서 이동하는 목표는 WebAssembly용 Qt 인 Qt 포트폴리오에 중요한 플랫폼을 하나 더 추가하는 것입니다 . WebAssembly 는 기본 솔루션과 웹 솔루션을 연결하는 매우 흥미로운 기술입니다. 네이티브 사용자 인터페이스를 웹으로 가져오는 데 도움이 될 뿐만 아니라 또한 비디오 편집, 이미지 인식, 게임 등과 같은 작업을 위해 최고의 성능을 필요로 하는 웹 애플리케이션을 위한 강력한 인에이블러입니다. WebAssembly용 Qt는 이러한 요구를 완벽하게 충족하며 잠시 동안 기술 프리뷰 상태였습니다. 우리의 현재 초점은 사용자가 기대하는 품질로 제공할 수 있도록 테스트 기능을 다듬는 것입니다. 다시 한 번, 우리는 이에 관한 더 많은 소식을 곧 제공할 것입니다.

우리는 Qt 6용 Qt Quick Compiler 의 도입에 대해 광범위하게 이야기했습니다. 참고로 이 게시물을 제품 관리 와 개발자가 읽어보세요( 1 2 3 ). 올해 동안 작업이 계속되고 몇 가지 추가 기능이 계획됩니다. 다른 이점 중에서 Qt Quick Compiler는 바인딩 평가에 소요되는 시간을 줄이고 성능 향상을 위해 일반적으로 QML을 C++에 더 가깝게 만듭니다.

프레임워크에 약간만 닿아도 QML 언어 서버 는모든 구문 분석, 리팩토링 및 린트 작업을 위한 중심 도구를 제공하는 지원이 곧 제공될 예정입니다. Qt Creator 통합을 시작으로 Visual Studio AddIn 및 Visual Studio Code에도 LSP를 가져오는 것을 목표로 합니다.

개발 환경 설정과 다른 프로그래밍 언어 학습을 단순화하기 위해 패키지 관리자가 점점 더 중요해지고 있습니다. Conan을 지원하고 Conan을 통해 Qt를 가져오기 위한 우리의 계획에 대해 읽었을 것입니다 . IDE 관점에서도 워크플로를 간소화하는 방법에 대한 추가 업데이트가 곧 제공될 예정입니다.

데스크탑에서 지속적으로 강력함

Qt는 데스크탑에서 시작했으며 항상 우리 제품의 중요한 구성 요소로 간주했습니다. 많은 개발자들이 데스크탑에서 시작하는 것뿐만 아니라, Qt Creator, Qt Design Studio, Squish 등과 같은 도구를 최고 품질로 작동하도록 유지하려면 개 먹이를 주는 것이 중요합니다.

지난 몇 년 동안 도입된 대부분의 기능은 데스크톱 및 모바일 사용에도 도움이 되었지만 때로는 해당 부문에 대한 변경 사항 및 추가 사항을 구체적으로 강조하는 것이 더 나을 수도 있습니다. 따라서 이 섹션에 있는 내용을 살펴보겠습니다. 모든 주요 플랫폼, Windows 및 macOS

에 대한 새로운 운영 체제 버전이 출시되었습니다 . Windows 11 동안대부분 개발 관점의 반복이며 Qt는 지속적인 지원을 처리했으며 응용 프로그램이 최신 Windows뿐만 아니라 Windows 10에서도 작동하는지 확인했습니다. 스타일 변경 사항에 대한 더욱 심화된 업데이트가 구현됩니다. 우리는 ARM에서 Windows를 지원하기 위해 열심히 노력해 왔으며 시장에 출시되는 새 하드웨어와 함께 더 많은 노력을 기울일 것입니다. Apple 하드웨어 측면에서 가장 큰 변화는 분명히 Apple Silicon(M1) 아키텍처 의 도입입니다 . 초기부터 Qt 6은 최신 macOS 플랫폼에 대한 배포를 지원하도록 업데이트되었습니다.

기존 기능 및 모듈 세트를 지원하는 것 외에도 많은 새로운 기능이 제공됩니다. TreeViews 및 Calendar 와 같은 구성 요소모바일 또는 임베디드에 비해 데스크탑 플랫폼에서 훨씬 더 많이 사용됩니다. 결과적으로 그리고 귀하의 피드백을 기반으로 6.3부터 Qt 빠른 제어에 도입 및 통합되었습니다. 또한 Qt Quick Dialogs 는 데스크탑 플랫폼에서의 사용에 더 적합하도록 항상 업데이트되고 있습니다. 예를 들어 TextEdit와 같은 큰 텍스트 구성 요소의 표시와 관련하여 많은 최적화가 이루어졌습니다. HiDPI 시나리오 관리를 위한 업데이트가 이미 있었지만 특히 다른 분수 스케일을 포함하여 설정이 다른 여러 모니터가 있는 시나리오에서 이 분야를 더욱 개선할 것입니다.

Qt 위젯데스크톱 플랫폼에서 널리 사용되며 항상 올바르게 실행되도록 지원됩니다. 또한 Qt Widgets와 Qt Quick을 연결하면 두 세계의 장점을 모두 사용할 수 있습니다. 이것은 주로 QQuickWidget 주변에서 발생합니다. QQuickWidget 을 사용하면 Qt Quick 요소를 위젯 기반 데스크탑 애플리케이션에 포함할 수 있습니다. 주요 사용 사례는 애니메이션, 하드웨어 가속, 셰이더가 프로젝트에 통합된 최신 사용자 인터페이스 기능을 갖는 것입니다. 또한 사용자 인터페이스를 원활하게 변환할 수 있습니다. 드물게 프로젝트가 전체 애플리케이션을 한 번에 점검할 수 있습니다. 우리는 또한 RHI 및 기타 요소에 대해 연구하고 있지만 현재로서는 구체적으로 공유할 수 있는 사항이 없습니다.

모바일 플랫폼에서 Qt에 밑줄 긋기

모바일 쪽에서는 최신 버전의 Android 및 iOS 가 지원됩니다. 최신 버전을 가져오는 동시에 호환성을 유지하려는 버전을 결정하는 것은 무리일 수 있습니다. 또한 최근 상점 요구 사항이 변경되고 있으며 Qt는 이에 적응할 것입니다.

스타일 은 응용 프로그램이 기본적으로 느껴지도록 하는 중요한 요소입니다. 따라서 우리는 업데이트된 iOS 스타일을 작업하는 동시에 Android용 머티리얼 스타일과 Windows용 유니버설도 업데이트하고 있습니다.

또한 추가 요구 사항으로 인해 모바일 플랫폼의 개발이 복잡해질 수 있습니다. 현재 권한 관리 를 개선하는 방법을 연구 중입니다.일반적으로. 플랫폼은 정적인 설명에서 보다 동적인 접근 방식으로 발전했습니다. 각 사용자는 앱이 한 번 또는 정기적으로 가져야 하는 권한을 세분화된 방식으로 런타임에 결정할 수 있습니다. 이것은 여기에 도움이 되는 적절한 API에 대한 Qt의 투자에 대한 좋은 쇼케이스입니다. 인증은 조사해야 할 또 다른 잠재적 요소입니다.

때로는 플랫폼별 API가 필요하지 않은 플랫폼별 기능이 필요합니다. 특히 Android의 경우 한 가지 예는 다양한 종류의 백그라운드 작업 및 서비스를 처리하는 방법입니다. 현재 Qt 서비스 구현 은 추가 사용 사례를 지원하도록 확장될 것입니다. 리치 콘텐츠 삽입 , 새로운 Splash Screen API 와 같은 Android 플랫폼에 대한 최신 추가 기능 뿐만 아니라범위 지정 저장소에 대한 IME 개선 및 지원은 다음 버전의 Qt에서 작업하고 제공될 예정입니다.

임베디드 제품 강화

임베디드 솔루션의 경우 Qt는 항상 최신 참조 장치가 추가되는지 확인합니다. Qt가 직접 또는 전체 공급업체 생태계를 통해 지원하는 하드웨어 포트폴리오는 도전의 여지가 없으며 Qt는 이를 계속 유지할 것입니다. QBSP 의 참조 목록에 최신 추가 사항NXP i.MX8M(Plus), STM32MP1, Nvidia Jetson AGX Xavier, Renesas RZ/G2L 및 Renesas E3, H3, M3에 대한 Qt 6 지원이 추가되었습니다. 우리의 목표는 예를 들어 i.MX8 및 기타 참조 플랫폼에서와 같이 Raspberry Pi를 사용하여 메이커 장면에 대해 동일한 간단한 워크플로를 만드는 것입니다. 또한 기본 운영 체제는 제품 설계에서 중요한 역할을 할 수 있습니다. QNX, Integrity 및 기타 실시간 운영 체제를 지원하는 Qt는 사용자에게 완전한 유연성을 제공합니다. 마지막으로 WebOS 플랫폼 에 대한 지원을 발표했으며 계속 지원하고 있습니다 .

이 외에도 임베디드 제품에 Qt를 선택하는 것이 UI 전용 결정인 경우는 거의 없습니다. Qt는 전체 미들웨어 계층을 구현하기 위한 많은 모듈을 제공합니다. Qt 인터페이스 프레임워크이전에 Qt IVI로 알려졌던 를 사용하면 백엔드와 프론트엔드 로직을 명확하게 분리하여 서비스와 백엔드를 사용자 인터페이스에 연결할 수 있습니다. 역사적으로 자동차 부문에 중점을 두었지만 이제 우리는 일반적으로 임베디드 플랫폼으로 기능 세트를 확장하고 있으며 우리의 예제와 문서에서도 이를 강조할 것입니다.

드물게 임베디드 제품이 하나의 중앙 UI 애플리케이션을 중심으로 설계되었습니다. 대신 현대적인 디자인을 통해 여러 애플리케이션을 관리할 수 있습니다. Qt Wayland 컴포지터 뿐만 아니라 Qt Application Manager 도 여기 에서 큰 도움이 될 것입니다.

자동차 분야에서는 Android Automotive 에 대한 지원도 확대 및 개선하고 있습니다.(AAOS 및 GAS 모두). Qt Android Automotive는 개발자에게 더 나은 경험을 제공하기 위해 다양한 Android API와 계속 통합됩니다. Qt Android 애플리케이션에 타사 Android 활동을 포함할 수 있는 새로운 QML 구성 요소를 기술 미리 보기로 출시합니다. 또한 타사 음악/비디오 앱과 상호 작용하고 Qt Android 앱 내에서 알림을 읽고 상호 작용할 수 있는 사용하기 쉬운 API 및 구성 요소를 제공하기 위해 적극적으로 노력하고 있습니다. 최신 데모를 확인하는 것을 잊지 마십시오.

https://youtu.be/bXGF-E-B_gI

일부 영역에서는 안전이 스택에서 고려해야 하는 중요한 자산입니다. Qt Safe Renderer 를 사용하면 ISO 26262에 따라 인증을 받은 안전 필수 요소를 쉽게 통합할 수 있습니다 . 올해 후반에 다른 기능 중에서 터치 및 다중 디스플레이 지원과 같은 기능을 제공할 예정입니다.

설계 가속화 – 워크플로 개발

Qt는 뛰어난 그래픽 사용자 경험과 인터페이스를 만드는 기능으로 주로 알려져 있고 사용됩니다. 지금까지 이 기사의 초점은 이와 관련된 많은(전부는 아님) 요소였습니다. 그러나 물론 RHI에서 시작하여 Qt Design Studio를 사용하는 디자이너를 위한 최신 UI 기능 및 도구를 위한 고급 API에 이르기까지 하드웨어 가속을 통해 렌더링하는 전체 그래픽 파이프라인에도 상당한 투자가 이루어지고 있습니다.

Qt Quick 3D를 사용하면 고유한 워크플로를 통해 현대적인 애플리케이션과 장치를 만들 수 있습니다. Qt 6.0의 초기 도입 이후 파티클, 인스턴스 렌더링, 메쉬 모핑 등과 같은 많은 기능을 추가했습니다. Qt 6.3은 실시간 반사, 리소스 관리 API 및 새로운 효과를 가져올 것입니다. 그러나 우리는 여기서 멈추지 않을 것입니다.

https://youtu.be/1ZWSo-GbaoI

고객 피드백을 기반으로 물리 통합 및 충돌 감지에 대한 추가 개발이 이루어집니다. 셰이더 생성 및 렌더링 향상과 관련된 도구를 개선할 것입니다. 또한 엔진은 잠재적인 병목 현상을 정확히 찾아내고 제품 성능을 최적화하기 위해 프로젝트 분석과 관련된 추가 기능을 얻습니다.

이러한 모든 기능은 디자이너와 개발자를 위한 추가 도구로 둘러싸여 있습니다.

더 많은 것이 있습니다…

처음에 언급했듯이 Qt는 광범위한 개발 프로젝트를 다루고 제품 생성의 모든 측면을 위한 추가 도구로 프레임워크를 지원합니다.

더 많은 항목이 있으므로 더 논의할 시간이 있었으면 합니다. 예를 들어, 우리는 클라우드 연결 에 대해 이야기하지 않았습니다 . 일반적으로 우리는 Qt 애플리케이션을 클라우드 솔루션에 연결하는 프로세스를 단순화하는 것을 목표로 합니다. 요즘에는 모든 제품 발명이 연결된 우선 접근 방식을 취하기 때문입니다. Qt에서는 이미 모든 것이 가능하지만 워크플로를 더욱 단순화할 수 있는 몇 가지 아이디어가 있습니다. Qt HTTP Server 완성, 더 나은 프로토콜 버퍼, gRPC 통합 등과 같은 개별 항목은 향후 게시할 자체 기사를 받을 자격이 있습니다.

오늘 우리는 Python용 Qt 와 같은 다른 언어로 바인딩 및 제공하는 Qt의 다른 각도에 대해 논의할 시간이 없었습니다 . 당연히 이 문서에서 언급된 모든 기능도 암시적으로 지원됩니다. 그러나 또한 Python 세계에서 개발을 보다 자연스럽게 느낄 수 있는 방법에 대한 몇 가지 계획이 있습니다. Python은 임베디드에서도 더 많은 관심을 받고 있으며 Qt가 처음부터 어떻게 거기에 있을 수 있는지 연구하고 있습니다.

마지막으로, Qt Company는 우리의 핵심 제품에 인접하고 사용자가 배포 후 설정을 할 수 있도록 도와주는 신제품도 개발 중입니다. 한 가지 예는 최근 출시된 Qt 디지털 광고 플랫폼 입니다.

보시다시피, Qt에는 앞으로 많은 것들이 있으며 우리는 여러분과 함께 이 길을 가게 되어 기쁩니다.

728x90
반응형
반응형

2022년 모바일 현황

모바일 애플리케이션 비즈니스가 급성장하고 있습니다. 다운로드 횟수, 시간, 지출한 비용은 역대 가장 많은 수치를 보여줍니다. 정확히 말하면 2,300억 회의 다운로드, 3조 8000억 시간, 1,700억 달러를 소비했습니다. 더 많은 사람들이 더 많은 시간과 돈을 투자할수록 시장 출시 시간은 애플리케이션 개발자와 게시자에게 중요한 요소가 됩니다. 또한 선점한 자에게 큰 이점을 제공하는 더 많은 경쟁이 있습니다.

모바일은 이미 수년 동안 전 세계 대다수의 사람들이 디지털 콘텐츠를 소비하는 사실상의 장치였으며 활력이 고갈되지 않는 것 같습니다. 2019년 이후 세계 상위 10개 시장에서 일일 평균 사용량이 30% 증가했습니다. 사람들은 하루 평균 4.8시간을 기기 앞에서 보내며 총 3조 8000억 시간을 사용합니다. 10시간 중 7시간은 소셜 미디어, 커뮤니케이션, 사진 및 비디오 애플리케이션에 사용되었습니다.

2021년 최대 단일 승자는 틱톡(TikTok)으로 전년 대비 75% 성장했습니다. 다른 상위 5개 소셜 응용 프로그램은 메타 컴퍼니(Meta Company) 제품군에서 나온 것으로 꽤 놀라운 것입니다. 주로 이전 세대는 젊은 사용자(주로 Z세대)가 새로운 응용 프로그램을 시도할 의향이 있을 때 이미 알고 있는 응용 프로그램을 고수하고 있습니다. 이는 애플리케이션 퍼블리셔에게 새로운 시장 트렌드에 신속하게 대응하는 동시에 기존 사용자의 요구에 부응해야 한다는 압력을 가합니다. 개발 주기는 점점 더 빨라지고 있으며 사용자는 원하는 것을 얻지 못하면 발로 투표하고 있습니다.

모바일 우선 접근 방식 이라고도 하는 주요 개발 대상 플랫폼으로서의 모바일은 대부분의 애플리케이션 게시자에게 있어 주요 추세입니다. 퍼블리셔는 2021년에만 2백만 개 이상의 새로운 애플리케이션을 출시했습니다. Apple의 AppStore와 Google의 Play 스토어에 게시된 총 2,100만 개의 애플리케이션 수와 비교하면 그 숫자의 엄청난 양을 이해할 수 있습니다. 두 앱 스토어 모두 꾸준히 성장하고 있지만 Google은 전체 신규 릴리스의 77%로 우위를 점하고 있습니다.

사용자들은 또한 총 지출액이 1,700억 달러에 달했기 때문에 앱에 기꺼이 비용을 지불할 의향이 있었습니다. 233개의 앱이 1억 달러 이상의 매출을 올렸고 13개의 앱이 10억 달러 이상의 수익을 올렸습니다. 구독 및 인앱 구매가 가장 인기 있는 가격 모델이 되었지만 광고가 지배적인 수익 창출 모델입니다. 모바일 광고 지출은 2021년 2,590억 달러로 전년 대비 23% 성장했습니다. 사용자 및 광고 지출 증가는 게시자에게 희소식입니다. 게시자는 대상 사용자 그룹에 따라 자신의 작업으로 수익을 창출하고 여러 수익 모델을 활용할 수 있습니다. 그들이 제 시간에 시장에 도착하는 한…

모바일 애플리케이션 시장은 2021년에 좋은 한 해를 보냈고 2022년에도 정체될 기미가 없습니다. 마침내 글로벌 팬데믹이 진정되는 것 같고 긍정적인 신호가 많이 있습니다. 애플리케이션 퍼블리셔가 성장 점유율을 확보하려면 출시 시간이 그 어느 때보다 중요합니다. 출시 시간을 단축하려면 더 빠른 반복, 더 긴밀한 피드백 루프 및 더 빠른 테스트가 필요합니다. 즉, 더 빠른 디자이너-개발자 워크플로. 여기에서 Qt는 모든 애플리케이션 개발자와 퍼블리셔가 변화를 만들고 성장의 일부를 얻을 수 있도록 도울 수 있습니다.

728x90
반응형
반응형

보안 권고(Security advisory) : QProcess

최근 Qt Project의 보안팀은 QProcess와 관련된 문제를 인지하고 Unix 기반 플랫폼에서만 발생하는 보안 문제로 판단했습니다. 우리는 이것이 트리거될 가능성이 최소이기 때문에 애플리케이션에 상당한 위험이 있다고 생각하지 않습니다.

특히, 문제는 QProcess를 사용하여 절대 경로 없이 응용 프로그램을 시작하는 데 있으며, 결과적으로 PATH 환경 변수에서 찾는 것에 의존합니다. 결과적으로 공격자가 문제의 실행 파일 복사본을 QProcess의 작업/현재 디렉터리에 배치하고 대신 호출하도록 할 수 있습니다.

이 상황은 PATH 환경 변수가 문제의 실행 파일을 찾기 전에 먼저 해당 디렉토리를 검색하기 때문에, Windows에서 예상됩니다. 그러나 Unix 기반 플랫폼에서 PATH 환경 변수에서 찾을 수 없는 경우, 작업/현재 디렉토리를 검색하는 것은 정상이 아닙니다. 따라서 공격자가 동일한 이름의 악성 실행 파일을 거기에 배치할 수 있습니다.

절대 또는 상대 경로와 함께 QProcess를 사용하는 경우 이는 문제가 되지 않습니다. 구체적으로 다음과 같이 특별하게 호출하는 경우에 발생함:

QProcess p;
p.start( "application", args );

이것은 문제가 발생할 수 있습니다.

현재 지원되는 Qt 및 Qt 5.12 버전에 대한 패치는 여기에서 찾을 수 있습니다.

dev: https://codereview.qt-project.org/c/qt/qtbase/+/393113

Qt 6.2: https://codereview.qt-project.org/c/qt/qtbase/+/394914 또는 https://download.qt.io/official_releases/qt/6.2/CVE-2022-25255-qprocess6-2.diff

Qt 5.15: https://codereview.qt-project.org/c/qt/tqtc-qtbase/+/394919 또는 https://download.qt.io/official_releases/qt/5.15/CVE-2022-25255-qprocess5-15.diff

Qt 5.12: https://codereview.qt-project.org/c/qt/qtbase/+/396020

Qt를 패치하지 않으려면 QProcess 내부가 아닌 애플리케이션의 전체 경로를 확인하여 이 문제를 해결할 수 있습니다. 이 목적을 위해 QStandardPaths::findExecutable() 을 사용할 수 있습니다. 이렇게 하면 PATH 환경 변수를 검색하고 결과적으로 안전한 사용 경로를 제공할 수 있기 때문입니다.

이에 대한 공식 CVE 보고서는 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-25255 에서 찾을 수 있습니다.

728x90
반응형
반응형

Qt 상용 라이선스 간소화!

Qt Company는 제품 제공을 확장하기 위해 새로운 기능을 개발하고 신기술을 습득하는 데 막대한 투자를 했습니다. 시장의 피드백은 당사의 라이선스 제안, 조건 및 조건이 복잡하고 이해하기 어렵다는 것입니다. 따라서 우리는 상업적 제안을 합리화하고 단순화하고 있습니다. 우리의 주요 목표 중 하나는 "우리와 쉽게 거래할 수 있도록 하는 것"이며 이 블로그 게시물에 설명된 변경 사항을 통해 목표를 달성할 수 있을 것이라고 믿습니다.

다음은 변경하려는 주요 사항입니다.

  • 우리는 개발자 라이선스를 4개 에디션으로 간소화하고 통합하고 있습니다.
  • Qt Design Studio는 개발자 라이선스에 포함되어 별도로 제공됩니다.
  • 구독 라이선스가 있는 고객은 Qt 개발자 라이선스가 만료된 후 애플리케이션을 배포할 수 있습니다.
  • 우리의 품질 보증 도구는 이제 개발자 및 디자이너 도구와의 단일 Qt 라이선스 계약에 따라 적용됩니다.

기존 고객 라이선스 및 진행 중인 협상은 이러한 변경의 영향을 받지 않습니다. 새로운 포트폴리오와 라이선스는 2022년 2월 1일부터 제공됩니다.

개발자 오퍼링 통합

복잡성을 줄이기 위해 아래 표에 나와 있는 것처럼 개발자 제안을 4개의 기본 라이선스 버전으로 통합하고 있습니다. 더 높은 수준의 에디션일수록 더 많은 기능을 포함합니다. 각 에디션은 어니언(양파) 아키텍처 라이선스의 이전 에디션을 기반으로 합니다.

그림: 어니언 아키텍처에서 에디션을 제공하는 상용 개발자. 상위 수준 라이선스에는 '내부/하위' 계층의 기능이 포함됩니다.

별도의 라이선스로 판매되던 여러 애드온을 전체 제품에 통합하고 있는 것을 그림에서 볼 수 있습니다. 이러한 상용 애드온은 M2M(Machine-to-Machine) 프로토콜, 마이크로컨트롤러용 사용자 인터페이스를 개발하기 위한 라이브러리, 안전이 중요한 애플리케이션, 자동차 전용 목적 및 애플리케이션 관리를 위한 기능을 제공합니다.

이것이 나에게 어떤 영향을 줍니까?

'Qt for Application Development' 구독 라이선스 보유자는 'Qt for Application Development Enterprise' 라이선스 보유자로 전환됩니다. "Qt for Device Creation"의 구독 라이선스 보유자는 'Qt for Device Creation Professional' 라이선스 사용자로 전환됩니다. 위의 표에 나와 있는 것처럼 새 라이선스는 구독 라이선스 보유자에게 추가 비용 없이 추가 기능을 제공하고 개발자 제안을 크게 단순화합니다. 기존 라이선스는 라이선스 기간이 끝나면 자동 갱신을 통해 새 버전으로 자동 변환되며 많은 새로운 기능은 Qt 유지 관리 도구를 통해 즉시 사용할 수 있게 됩니다.

Qt Design Studio 라이선스 업데이트

곧 Qt Design Studio 3.0을 출시할 예정입니다. 상업용 라이선스는 두 가지 버전으로 제공됩니다.

  • Qt 디자인 스튜디오 프로페셔널
  • Qt 디자인 스튜디오 엔터프라이즈

Qt Design Studio Professional 라이선스는 사용자 인터페이스 디자인, 편집, 애니메이션 및 프로토타이핑을 위한 모든 도구와 3D도 제공합니다. 특징 및 기능은 타사 브리지 플러그인을 제외하고 Qt Design Studio 2.3의 기능과 일치합니다. 디자이너는 라이선스를 별도로 구입할 수 있으며 Qt Creator 6.0 이상 버전을 사용하는 개발자는 개발자 라이선스의 일부로 도구가 포함됩니다.

Qt Design Studio Enterprise는 테크니컬 아티스트와 사용자 인터페이스 디자이너를 위한 제품입니다. 이를 통해 Figma, Adobe XD 및 Sketch를 비롯한 주요 그래픽 디자인 도구에서 디자인을 가져오고 Maya, Modo, Blender에서 3D 요소를 가져올 수 있습니다. 올해에는 더 많은 부가 가치 기능을 도입하여 디자이너가 아름다운 사용자 인터페이스를 만들 수 있도록 할 것입니다.

고객 피드백을 기반으로 한 이용 약관 업데이트

귀하의 제품을 배포하기 위해 유효한 개발자 구독 라이선스가 있어야 한다는 요구 사항이 방해가 된다고 말씀해 주셨고 저희는 귀를 기울였습니다! Qt 라이선스에 대한 투자를 보호하기 위해 이 요구 사항을 제거하기로 결정했습니다.

이전에는 라이선스 계약에 따라 고객이 유효한 개발자 라이선스 없이 애플리케이션을 배포할 수 없었습니다. 이 조건은 보안 및 유지 관리 문제를 해결하고 제품을 업데이트할 수 있는 기능을 제공하기 위한 것입니다. 그러나 귀하의 피드백에 따라 오늘 발표된 Qt 라이선스 계약(버전 4.4) 에 따라 구매한 라이선스에 대해 이러한 제한이 해제 되었습니다. 더 이상 필요하지 않지만 The Qt Company는 보안 수정 및 소프트웨어 유지 관리를 위해 최소한 하나의 유효한 개발자 라이선스 구독을 유지하도록 강력히 권장합니다.

Qt 라이선스 계약 4.4에는 다른 변경 사항도 있습니다. Qt Company의 QA(품질 보증) 도구를 계약에 추가했습니다. QA 도구는 2021년 Froglogic 인수를 통해 Qt 포트폴리오에 추가한 제품입니다. Squish, Test Center 및 Coco는 이제 디자이너 및 개발자 라이선스와 함께 단일 라이선스 계약이 적용됩니다. 이 변경은 QA 도구의 조건이나 가격에 영향을 미치지 않지만 계약 구조를 더 단순하게 만듭니다.

또한 책임 기간을 구독 기간과 일치시켰습니다. 이전 버전의 라이선스 계약(버전 4.3.x 이하)에서 Qt 책임 기간은 구매한 라이선스 기간에 관계없이 12개월로 제한되었습니다. 이제 책임 기간은 구독 기간에 따릅니다.

계약을 체결한 기존 고객은 일방적으로 계약을 변경할 수 없으므로 새 계약의 혜택을 자동으로 받지 못합니다. 라이선스 계약 버전 4.4로의 업그레이드에 대해 논의하려면 계정 관리자 에게 문의하거나 연락을 요청 하십시오.

간소화된 포트폴리오 및 라이선스의 이점

Qt 고객은 라이선스 구조, 약관 및 조건에 대해 많은 피드백을 제공했습니다. 우리는 제품 제공을 단순화하고 통합하기 위해 많은 노력을 기울였습니다.

변경 사항을 통해 당사의 제안을 더 쉽게 이해하고 Qt Company와 비즈니스를 수행할 수 있습니다. 기존 고객은 더 적은 수의 다른 라이선스 유형으로 기능을 통합함으로써 이점을 얻을 수 있습니다.

단순화된 포트폴리오에 대한 자세한 내용은 www.qt.io/pricing 의 상용 라이선스에 대한 FAQ(자주 묻는 질문 ) www.qt.io/faq/overview 에 나와 있습니다. 그리고 질문이나 의견이 있으시면 아래로 연락주시거나 댓글을 남겨주세요!

728x90
반응형
반응형

안드로이드(Android) 차량(Automotive) 기술 미리보기용(preview) Qt 출시

Google의 AAOS(Android Automotive OS)가 자동차 분야에서 큰 파장을 일으켰다는 것은 비밀이 아닙니다. 자동차 정보 시스템 및 헤드 유닛에 개방성, 맞춤화 및 확장성을 제공하도록 구축된 이 제품은 업계를 더욱 혼란에 빠뜨릴 것으로 예상됨에 따라 생산 차량에서의 채택이 지속적으로 증가하고 있습니다.

AAOS는 연결된 IVI(In-Vehicle Infotainment) 개발을 위한 훌륭한 기반을 제공하지만 많은 자동차 제조업체는 Android 기반 HMI(Human-Machine Interface)를 개발할 때 제한된 디자이너 도구와 3D 지원 부족으로 어려움을 겪고 있습니다. 우리의 목표는 자동차 제조업체가 브랜드 아이덴티티를 유지하고 Android 홈 화면에서 고급 3D 그래픽과 Qt 프레임워크 및 디자인 도구가 제공하는 수많은 다른 이점을 활용할 수 있도록 하는 것입니다.

Android Automotive용 Qt로 IVI 시스템 개발

Qt Android Automotive OS 기술 미리보기(QAA)는 이제 모든 상용 Qt Device Creation 라이선스 사용자에게 제공됩니다. Android Automotive용 Qt는 Qt 프레임워크 및 UI 툴킷을 Android Automotive 바인딩, Android 바인딩 및 Qt IVI 프레임워크와 통합합니다.

  • Qt HMI 프레임워크 및 디자인 도구를 사용하여 Android 홈 화면을 디자인, 빌드 및 사용자 지정합니다.

  • Android에서 2D 및 3D 그래픽을 원활하게 결합

  • Qt 빌드 HMI를 네이티브 자바 앱용 앱 런처로 사용

  • 자동차 API에 대한 기성품 통합

  • 네이티브 Java 앱과 Qt 기반 HMI 간의 원활한 연결

<iframe width="520" height="390" src="https://www.youtube.com/embed/ZaEPQGp58t0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Android Automotive에 대한 예제 사용해

보기 기술 미리 보기에는 개발의 시작점으로 사용할 수 있는 몇 가지 예제가 포함되어 있습니다.

HVAC 예

Android 에뮬레이터의 Android Automotive OS에서 실행되는 Qt Design Studio에서 개발된 HVAC UI. 예제 UI는 팬 속도, 팬 방향, 온도, AC 켜기/끄기, 최대 AC 켜기, 서리 제거 장치 등과 같은 VHAL 속성과 원활하게 연결됩니다.

<iframe width="520" height="390" src="https://www.youtube.com/embed/EFAwwZdHkxU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

HVAC 구역 예

두 번째 HVAC 예제는 차량 내 여러 기후 구역을 제어할 수 있는 HVAC 애플리케이션을 구축하는 방법을 보여줍니다.

<iframe width="520" height="294" src="https://www.youtube.com/embed/BtJeWG0TFyE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

차량 속성 예

이 예는 Android Automotive VHAL 속성과 통신하는 Qt Quick 애플리케이션을 만드는 방법을 보여줍니다. 두 개의 VHAL 매개변수와 상호 작용합니다. AC On그리고 Window Locked.

앱 목록 예제

이 예는 Qt Android Apps Utils를 사용하여 Android 또는 Android Automotive 장치에 설치된 앱 목록을 표시하는 방법과 관련 이벤트를 처리하는 방법을 보여줍니다. 애플리케이션 UI는 Qt Quick을 사용하여 생성됩니다.


728x90
반응형

'Qt' 카테고리의 다른 글

보안 권고(Security advisory) : QProcess  (0) 2022.03.02
Qt 상용 라이선스 라이센스 License 간소화!  (0) 2022.02.04
안드로이드(Android)용 Qt 6.2  (0) 2021.10.02
Get env value (in Windows)  (0) 2021.09.05
Qt 웹샵 (WebShop)  (0) 2021.06.12
반응형

안드로이드(Android)용 Qt 6.2

Qt는 계속해서 각 릴리스에서 Android 지원을 개선하는 것을 목표로 하고 있습니다. Qt 6.2는 새로운 API, 기능 업데이트 및 버그 수정과 관련하여 Android에 대한 많은 개선 사항을 제공합니다. 이 블로그 게시물은 Qt 6.2에서 Android의 주요 변경 사항을 안내합니다.

QtAndroid 네임스페이스(namespace)

Qt 6의 Qt Extras 모듈에서 Qt Extras 모듈에 대해 수행한 작업에 이어 Qt 5의 QtAndroid 네임스페이스가 제공하는 일부 기능은 이제 QNativeInterface::QAndroidApplication 에서 제공됩니다. 예를 들어 다음 스니펫(snippet)을 사용하여 Android의 기본 UI 스레드(thread)에서 시스템 UI 가시성(visibility)을 변경할 수 있습니다.

#include <QCoreApplication>

QNativeInterface::QAndroidApplication::runOnAndroidMainThread([]() {
   QJniObject activity = QNativeInterface::QAndroidApplication::context();
   // Hide system ui elements or go full screen
   activity.callObjectMethod("getWindow", "()Landroid/view/Window;")
           .callObjectMethod("getDecorView", "()Landroid/view/View;")
           .callMethod<void>("setSystemUiVisibility", "(I)V", 0xffffffff);
});

이전에 사용 가능한 앱 권한 요청 API는 QtCore에서 재설계되었습니다. 그러나 API는 Android를 제외한 다른 플랫폼의 구현이 후속 Qt 릴리스에서 준비될 때까지 아직 공개되지 않습니다.

여전히 누락된 기능이나 권한 API에 의존하는 클라이언트 <QtCore/private/qandroidextras_p.h>는 임시 헤더를 임시 솔루션으로 포함할 수 있습니다.

안드로이드 매니페스트(Android Manifest)

안드로이드 매니페스트는 모든 Android 앱의 중요한 부분이며 앱 이름, 아이콘 설정부터 사용자 지정 활동 및 서비스에 이르기까지 앱에 대한 다양한 세부 정보에 사용됩니다. Qt 5에서 매니페스트는 Qt 라이브러리 및 자산(asset)의 빌드 및 패키징 관리의 일부를 처리하는 데 사용됩니다. 이는 매니페스트가 상대적으로 길었고 빌드 시스템에 따라 다르거나 사용자가 수정할 수 있는지 여부가 명확하지 않을 수 있는 많은 메타 데이터를 포함한다는 것을 의미합니다. 이제 배포 관리를 위한 모든 속성이 숨겨져 매니페스트를 가볍게 유지하고 사용자별 메타 데이터만 포함합니다. 매니페스트에 대한 정보는 Qt Android 매니페스트를 참조하십시오.

이 변경 사항과 관련하여 Qt 5에서 사용되었던 Ministro는 최신 Android 버전에서 더 이상 지원되지 않기 때문에 이제 제거됩니다. 이러한 이유로 Qt 5를 사용하는 앱의 매니페스트 파일을 일부 변경해야 할 수 있습니다. 자세한 내용은 6.2 릴리스 이전의 Qt 매니페스트를 참조하십시오.

Non-SDK Android API

Android는 다양한 non-SDK API 에 대한 액세스를 제한해 왔으며 그 중 Qt가 글꼴 크기, 색상 및 형식 등과 같은 기본 스타일 정보를 추출하는 데 사용하는 일부 API가 있습니다. Android 9부터 이러한 API를 사용할 수 있습니다. 스타일 추출이 실패하거나 경고가 발생합니다. 해당 스타일 정보는 올바른 API를 사용하지 않습니다. QML을 사용하는 앱은 이전에 표시되었을 수 있는 경고 없이 올바르게 작동합니다. 그러나 당분간 한 가지 제한 사항은 위젯과 기본 Android 스타일을 사용하는 앱에 올바른 드로어블이 모두 없을 수 있다는 것입니다. 이러한 이유로 모바일 앱에는 QML을 사용하는 것이 좋습니다. 자세한 내용은 QTBUG-71590을 참조하십시오.

안드로이드 SDK 업데이트

Google Play 스토어는 스토어에 게시할 때 앱에서 사용되는 API 수준 의 요구 사항에 대한 업데이트를 자주 제공합니다. Qt는 이러한 요구 사항을 최신 상태로 유지하므로 현재 기본 대상 SDK 수준은 30(Android 11) 입니다. Qt 빌드에 사용되는 빌드 도구 및 플랫폼 버전도 30으로 설정됩니다.

또한 Android Gradle 플러그인이 Android 11의 <queries> 를 지원하는 버전 4.1.3으로 업데이트되었습니다 . 또한 이 업데이트를 통해 패키지가 이미 있는 최신 Gradle 플러그인 버전을 사용하여 패키지에 서명할 때 발생하는 버그가 수정되었습니다. Gradle에 의해 정렬됩니다.

기타 변경 사항

Qt Android의 기타 개선 사항 및 버그 수정에는 다음이 포함되지만 이에 국한되지는 않습니다.

  • QML 모듈 가져오기 및 QML 모듈 androiddeployqt을 찾는 데 사용할 수 있는 여러 QML 루트 경로 추가 가능성에 대한 수정 사항 :
set_property(TARGET name APPEND PROPERTY QT_QML_ROOT_PATH ${qml_path_1})
...
set_property(TARGET name APPEND PROPERTY QT_QML_ROOT_PATH ${qml_path_2})
  • 단일 ABI로 Android App Bundle을 게시하기 위한 문서 개선 사항은 Google Play에 게시를 참조하십시오.

  • Qt 앱은 이제 getReferrer() 에서 앱을 시작한 사람에 대한 정보를 제공합니다.

  • 예를 들어 Android 앱 링크 작업을 허용하는 Android에서 QDesktopService 핸들러 를 지원합니다.

  • CMake를 사용하여 Android용 Vulkan 기능 감지 및 빌드를 수정했습니다.

  • 태그가 항상 애플리케이션 이름으로 설정되었던 이전 동작과 달리 QCDebug() 및 해당 변형은 이제 Android logcat에서 제공된 카테고리를 태그로 올바르게 사용할 수 있습니다.

귀하의 의견

사용자의 피드백은 언제나 환영입니다! 제안, 요청 또는 버그 보고서가 있는 경우 여기 블로그(https://www.qt.io/blog) 또는 https://bugreports.qt.io 에 남길 수 있습니다.

728x90
반응형
반응형
// See https://github.com/j2doll/GetEnvValue-Qt for more information.
#include <QtGlobal>
#include <QObject>
#include <QString>
#include <QStringList>
#include <QRegularExpression>
#include <QDebug>
#include <QCoreApplication>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QByteArray baEnv = qgetenv("PATH"); // use in Windows
if ( baEnv.length() >= 1 )
{
QString str = QString(baEnv);
qDebug() << str;
QRegularExpression rx("(\\;)"); // token is ;
QStringList query = str.split(rx);
foreach (QString pathName, query)
{
qDebug() << pathName;
}
}
return 0; // return a.exec();
}
728x90
반응형
반응형

Qt WebShop

  • 링크 : https://www.qt.io/webshop/

  • 인터넷으로 Qt 라이센스 구매가 가능합니다.

    • 총판에서 안 사도 됩니다.
  • 년간 / 월간 구독이 모두 가능해졌습니다.

    • 한 달짜리 어플리케이션 개발 395달러. 일 년은 3950 달러 (2021년 6월 기준)
    • 매출 25만 달러(한화 2~3억) 이하 중소기업은 일 년 499 달러
  • LGPL3 라이센스 유지하셔도 되긴 합니다. 구매는 상업용 프로젝트 또는 대형 프로젝트만 고려하시면 될 것 같습니다.

728x90
반응형
반응형

2021년 Qt 로드맵 (Qt Roadmap for 2021)

2021년 4월 27일 Tuukka Turunen

곧 출시될 Qt 6.1과 함께 2021년이 Qt 사용자에게 무엇을 제공해야 하는지 살펴볼 때입니다. 이 게시물에서는 Qt 프레임워크 계획을 살펴본 다음, 현재 개발중인 도구 및 기타 항목에 대해 약간 이야기하겠습니다. 항상 그렇듯이 너무 많은 작업들이 있어서 짧은 글로 모든 것을 완전히 설명할 수는 없지만, 이해하기 좋은 개요를 제공하려고 노력하겠습니다.

Qt 6.0

2020 년 12월에 우리는 오랫동안 작업해온 새로운 주요 버전의 Qt를 출시 했습니다. 2020년대의 요구사항에 대한 새로운 기준을 제공하는 동시에 Qt 5와의 높은 수준의 호환성을 제공하여 최대한 원활하게 마이그레이션 할 수 있습니다.

Qt 6 이 제공하는 기능을 아직 살펴 보지 않았다면 Qt 6.0 릴리스 블로그, Qt 6의 기술적 비전 및 Qt 6.0 하이라이트 개요를 살펴보십시오.

Qt 6.0을 사용하기 위해 Qt 5에서 마이그레이션하는 사람들을 위한 포팅 가이드 를 작성했으며, 물론 Qt6에 대한 문서도 업데이트했습니다.

Qt 6.0와 함께 우리는 가장 널리 사용되는 데스크탑, 모바일 및 임베디드 플랫폼을 지원하는 안정적인 베이스라인을 제공합니다. 모든 필수 모듈과 가장 일반적으로 사용되는 추가 기능이 Qt 6.0에서 사용할 수 있으며, 더 많은 추가 기능이 Qt 6.1 및 Qt 6.2 LTS 릴리스와 함께 제공됩니다.

Qt 6.0은 다음과 같은 필수 및 추가 모듈을 제공합니다.

  • Qt Concurrent
  • Qt Core
  • Qt Core Compatibility APIs
  • Qt D-Bus
  • Qt GUI
  • Qt Help
  • Qt Network
  • Qt OpenGL
  • Qt Print Support
  • Qt QML
  • Qt Quick
  • Qt Quick 3D
  • Qt Quick Controls
  • Qt Quick Layouts
  • Qt Quick Timeline
  • Qt Quick Widgets
  • Qt Shader Tools
  • Qt SQL
  • Qt SVG
  • Qt Test
  • Qt UI Tools
  • Qt Wayland
  • Qt Wayland Compositor
  • Qt Widgets
  • Qt XML
  • Qt 3D
  • Qt Image Formats
  • Qt Network Authorization
  • M2M package: Qt CoAP
  • M2M package: Qt MQTT
  • M2M package: Qt OpcUA

필요한 모듈을 찾지 못한 경우 다음 이유 중 하나 때문일 수 있습니다:

  • 아래에 나열된 Qt 6.1 및 Qt 6.2 LTS와 함께 제공되는 추가 라이브러리 중 하나입니다.
  • Qt 6(Qt KNX, Qt script 및 Qt XML pattern과 같은)에서 의도적으로 제거되었습니다.
  • 이 기능은 다른 모듈이거나 그 일부가 될 것이므로 더 이상 별도의 모듈로 필요하지 않습니다 (예: 플랫폼 별 추가 기능).
  • Qt 6.2 LTS 이후에 사용할 수 있도록 하는 것입니다.
  • 도구 Qt Creator, Qt Design Studio), Qt Safe Renderer, MCU용 Qt 등과 같은 Qt 프레임워크의 일부가 아닙니다.

가능한 한 간단하게 Qt 6으로 마이그레이션 했지만 일부 변경 사항은 Qt 5에서 Qt 6으로 이식하는 데 영향을 미칠 수 있습니다. Qt 6으로 마이그레이션 할 때 일부 이전 API가 제거되었고 새로운 API가 도입되었습니다. 의도적으로 기능이 제거된 경우 애플리케이션을 적절하게 수정해야 할 수 있으며, 지원을 위한 포팅 가이드가 있습니다.

Qt 6.1

Qt 6.1 릴리스는 5월 초(2021년)에 출시될 예정이며 곧 릴리스와 관련된 모든 것을 확인할 수 있습니다. Qt 6.1에 포함된 내용을 살펴 보려면 Qt 6.1 위키의 새로운 기능 페이지 https://wiki.qt.io/New_Features_in_Qt_6.1 을 확인하십시오.

Qt 6.1에서 우리는 추가 라이브러리를 얻기 위해 Qt 6.0에 도입된 패키지 관리자로 한 걸음 물러서기로 결정했습니다. Qt 6.1은 베이스라인 모듈과 동일한 바이너리 설치 프로그램을 통해 추가 라이브러리를 제공합니다. 우리는 패키지 관리자 기능에 대한 작업을 계속하고 Qt 6.0에서 제공한 것보다 향상된 개발자 경험을 통해 나중에 다시 가져 오는 것을 목표로 합니다.

Qt 6.1에서는 다음과 같은 추가 라이브러리를 제공합니다.

  • Active Qt
  • Qt Data Visualization
  • Qt Charts
  • Qt State Machines
  • Qt Lottie
  • Qt Virtual Keyboard
  • Qt for Device Creation: Qt Device Utilities
  • Compatibility: Qt Graphical Effects

우리는 이미 Qt 6.1의 릴리스 후보를 사용할 수 있으며 Qt 6.1에 대한 자세한 블로그 게시물이 있는 릴리스가 곧 출시될 예정이므로 여기에서 새로운 기능에 대해 자세히 설명하고 싶지 않습니다. 곧 Qt 6.1은 많은 기본 모듈(Core, Gui, Network, …)에서 중요한 새 기능과 업데이트를 제공하고 프레임워크 전체에 걸쳐 소규모 수정사항을 제공합니다. Qt 6.1을 통해 Qt Quick 3D의 새로운 기능은 물론 인스턴스 렌더링 및 3D 입자 와 같은 향후 기능에 대한 기술 미리보기도 제공 합니다.

Qt 6.2 LTS

Qt 6.2 LTS는 2021 년 9 월 말을 목표로합니다. Qt 6 시리즈의 첫번째 장기 지원 릴리스입니다. 오픈 소스 및 상용 사용자 모두 Qt 6.2.0 및 Qt 6.3.0 릴리스(H1/2022)까지 생성된 모든 Qt 6.2.x 패치 릴리스를 받습니다. Qt 6.3이 출시된 후 Qt 6.2의 후속 패치 출시는 상업용 라이선스 보유자만 사용할 수 있습니다.

Qt 6.2 LTS의 경우 다음과 같은 추가 라이브러리를 제공할 계획입니다.

  • Qt Bluetooth
  • Qt Multimedia
  • Qt Positioning
  • Qt Quick Dialogs
  • Qt Remote Objects
  • Qt Sensors
  • Qt SerialBus
  • Qt SerialPort
  • Qt WebChannel
  • Qt WebEngine
  • Qt WebSockets
  • Qt WebView
  • Qt NFC
  • Qt Application Manager
  • Qt Interface Framework (formerly called Qt IVI)

추가 라이브러리를 Qt로 이식하는 것 외에도 Qt 6.2가 사용자에게 제공하는 가치를 더욱 높이기 위해 몇 가지 중요한 새로운 기능을 개발하고 있습니다. 그래픽 및 UI의 경우 Qt 6.1에 도입 된 테크니컬 프리뷰 기능을 완성하고 개선하여 이러한 기능을 완벽하게 지원하는 것을 목표로합니다. 데스크탑, 모바일 및 임베디드 플랫폼에서 뛰어난 성능으로 실행되는 멋진 2D 및 3D 사용자 인터페이스를 더 쉽게 만들 수 있도록 워크플로와 도구를 개선하고 있습니다. Qt 6.2의 경우 Qt의 그래픽이 아닌 모듈을 개선하여 성능, 사용자 편의성 및 도구와의 통합을 개선하기 위해 노력하고 있습니다.

우리는 Qt 6.2 용으로 개발 중인 새로운 플랫폼에 대한 많은 플랫폼 업데이트와 지원을 제공하며, 항상 그렇듯이 운영 체제 및 컴파일러의 최신 버전을 지원하는 것을 목표로합니다. ARM 기반 Apple Silicon / macOS는 Qt 6.2에서 지원하려는 가장 흥미로운 새 플랫폼 중 하나입니다. Rosetta 번역 환경을 통해 Qt 애플리케이션을 실행하는 것은 이미 가능하며 일부는 이미 기본적으로 작동합니다. Qt 6.2에서 우리는 개발 호스트와 배포 대상 모두로서 완전히 지원되는 플랫폼으로 ARM 기반 macOS를 제공하려고합니다. 또한 Qt 6.2 LTS를 사용하여 QNX 및 INTEGRITY 실시간 운영 체제에 대한 지원을 제공하기 위해 노력하고 있습니다.

Qt 5.15 LTS

우리는 Qt 5.15에 대한 상용 전용 LTS 단계에 들어갔고 상용 라이선스 보유자 만 사용할 수있는 첫 번째 패치 릴리스로 Qt 5.15.3을 출시했습니다. 다음 패치 릴리스는 이미 최종 단계에 있으며 곧 Qt 5.15.4를 릴리스 할 계획입니다. Qt 5.15 LTS의 패치 릴리스는 일반적으로 2-3 개월 주기로 이번과 내년 내내 계속됩니다.

바이너리 설치 프로그램을 사용하는 상업용 라이선스 보유자의 경우 모든 것이 이전과 똑같이 작동합니다. 새로운 상업용 LTS 패치 릴리스와 곧 출시 될 패치의 미리보기는 Qt 설치 프로그램을 통해 사용할 수 있습니다. 개발 저장소에 대한 액세스가 필요한 사용자 는 LTS 저장소에 액세스 할 수 있습니다 . 또한 상업용 LTS 리포지토리에서 작동하도록 Yocto 레시피를 업데이트했습니다. 따라서 Qt를 장치 생성 에 사용하는 경우 상업용 LTS 리포지토리와 함께 meta-qt5 사용에 대한 가이드를 확인하세요 .

마이크로 컨트롤러용 Qt 및 Qt Safe Renderer

최신 마이크로 컨트롤러는 얼마 전에 일반적인 메인 스트림 임베디드 마이크로 프로세서 보드에서 사용할 수 있었던 것과 비슷한 우수한 그래픽 기능을 갖추고 있습니다. MCU 용 Qt는 NXP, ST Microelectronics, Renesas 및 곧 Cypress / Infineon의 최신 마이크로 컨트롤러를 사용하여 멋진 시각적 사용자 인터페이스를 만드는 데 매우 적합합니다. MCU 용 Qt로 무엇을 할 수 있는지에 대한 개요를 보려면 https://resources.qt.io/qt-mcus 에서 데모 중 일부를 확인 하거나 기술 문서를 참조하십시오 .

우리는 이미 올해 MCU 용 Qt의 두 가지 기능 릴리스를 출시했으며 6월(2021년)에 MCU 1.9 용 Qt를 제공하기 위해 노력하고 있습니다. 지금까지 MCU 용 Qt 개발은 Windows 호스트에서만 지원되었지만 MCU 1.9 용 Qt에서는 개발 호스트로서 Linux도 공식적으로 지원하고 있습니다. 다음 주요 릴리스 인 MCU 2.0 용 Qt는 9 월에 출시 될 예정이며, 2021 년 12 월에 MCU 용 Qt 2.1을 출시 할 예정입니다. MCU 용 Qt 개발은 QML 언어의 하위 집합으로 이루어집니다. 곧 출시 될 MCU 2.0 용 Qt는 지원되는 QML 언어 하위 집합에 대한 Qt 6.2와의 호환성.

Qt Safe Renderer 는 기능 안전 인증 UI 솔루션입니다. 도로 차량 (ISO 26262 : 2018-6, 2018-8 ~ ASIL-D까지), 철도 애플리케이션 (EN 50128 : 2011 6.7.4 ~ SIL 4), 전기 / 전자 안전 관련 시스템 (IEC 61508 : 2010-3 7.4.4 SIL 3까지) 및 의료 (IEC 62304 : 2015 2006 + A1).

우리는 작년 내내 QSR 1.2를 개발하고 철저히 테스트해 왔습니다. 현재 인증 과정을 거치고 있으며 곧 출시될 예정입니다. Qt Safe Renderer의 새 릴리스는 렌더링 기능에 대한 여러 업데이트를 제공하고 새로운 플랫폼에 대한 지원을 확장합니다. QSR 1.2의 출시를 발표 할 때 더 많은 것을 기대해주십시오.

Qt Creator 및 Qt Design Studio

프레임 워크 라이브러리 작업에서 우리가 가지고있는 모든 위대한 것들에 대해 이야기 할 때, 도구를 조금 살펴 보는 것도 좋습니다. 결국 이것들은 대부분의 사용자가 Qt로 개발할 때 함께 작업하는 것이므로이를 최고 수준의 형태로 유지하는 것이 매우 중요합니다. 12 월에 Qt 6.0이 도입되면서 Qt Creator와 Qt Design Studio 모두에서 Qt 6에 대한 지원을 제공했습니다. 2021 년 동안 우리는 지원을 더욱 개선하고 Qt 6.1, Qt 6.2의 일부인 새로운 기능과 MCU 용 Qt 및 기타 제품을 지원하기 시작합니다.

Qt 6.1이 출시 될 즈음에 Qt Creator와 Qt Design Studio 모두를위한 새 버전이 출시됩니다. Qt Creator 4.15 및 Qt Design Studio 2.1은 자연스럽게 새로운 Qt 6.1을 지원하지만 이전 Qt 버전도 지원합니다. 곧 출시 될 릴리스를 기다릴 수 없다면 Qt Creator 4.15 베타 블로그 게시물 및 Qt Design Studio 2.1 베타 블로그 게시물 에서 가장 중요한 항목을 확인하십시오 .

우리는 Qt 6.2 LTS의 기준으로 8 월에 Qt Creator 5.0을 출시하고 개발자 도구를 더욱 개선하기 위해 11 월에 다음 버전을 출시 할 계획입니다. Qt Design Studio의 경우 Qt 6.2에 대한 디자이너 도구 지원을 제공하기 위해 9 월에 버전 2.2를 출시하고 12 월에 다음 버전을 출시합니다. 또한 두 도구를 모두 사용하여 프로젝트의 워크 플로를 개선하여 이러한 도구를 더 가깝게 연결하기 위해 노력하고 있습니다. 이러한 개선 사항 중 일부는 21 년 2 분기에 출시 된 버전과 2 월 2 일에 추가로 개선 된 버전에서 이미 제공되고 있습니다.

품질 보증 도구

최근 froglogic GmbH를 인수 함에 따라 우리는 품질 보증 도구 영역으로 제품을 확고하게 확장하고 있습니다. 우리는 GUI 테스트 자동화, 코드 커버리지 분석 및 테스트 결과 관리와 같은 froglogic의 주요 제품 라인을 계속해서 개선하고 있습니다. 이러한 모든 제품은 계속 개발되고 있으며,이를 더욱 개선하기 위해 함께 노력할 것입니다. 또한 Qt를 사용하지 않는 사람들에게 이러한 솔루션을 제공하는 것 외에도 전체 Qt 제품의 일부로 추가 시너지 효과를 조사 할 것입니다.

더 많은 것을 기대하십시오

올해에는 사용자들이 즐길 수있는 작업이 상당히 많습니다. 이 모든 것에 대해 자세히 설명하고 싶지만 이는 단일 블로그 게시물의 가능성을 넘어서는 것입니다. 하지만 걱정하지 마세요! 우리는 큰 새로운 이벤트가 5 월 18 오고 데브 / 데스 일 2021 일 - 21 일 . 훌륭한 정보가 많은 무료 온라인 이벤트입니다. https://www.qt.io/devdesdays 에서 확인하고 지금 등록 하십시오.

Dev / Des Days 외에도 다양한 주제에 대한 세부 정보를 살펴보면서 이미 게시되었거나 연중 제공 될 많은 흥미로운 웨비나 및 블로그 게시물이 있습니다.

728x90
반응형
반응형

Qt Quick의 3차원 입자 소개 (Introducing Qt Quick 3D Particles)

2021년 4월 16일, Kaj Grönholm

이미 보고 들은 것처럼 Qt Quick 3D는 Qt 6.1에서 3D 입자(particle)에 대한 지원을 도입합니다. 마찬가지로에 인스턴스화된 렌더링, 또한 3D 입자 모듈은 Qt 6.1에서 프리뷰 기술입니다. 완전한 기능은 Qt 6.2에서 지원됩니다. 이 블로그 게시물에서는 모든 개발자와 디자이너가 새로운 3D 입자에 대해 알아야 할 사항을 살펴볼 것이므로 계속 읽으십시오. 입자와 같은 시각적 요소를 사용하여 실제로 수행할 수 있는 작업을 확인하는 것은 항상 유용합니다. 아래 비디오는 Qt 6.1 예제의 일부로 포함된 테스트베드 애플리케이션의 일부 데모를 보여줍니다.

https://youtu.be/NAECub9cqA4

용법

Qt Quick 파티클 모듈에 익숙하다면 3D 파티클에도 익숙해 져야 합니다. 우선 "import QtQuick.Particles" 대신 QML 파일의 시작 부분에 "import QtQuick3D.Particles3D"를 사용합니다. 다음은 단일 논리 파티클, 이미 터 및 이펙터가있는 간단한 파티클 시스템에 대한 QML 코드입니다.

ParticleSystem3D {
    SpriteParticle3D {
        id: starParticle
        sprite: Texture {
            source: "images/star.png"
        }
        maxAmount: 200
        color: "#ffff00"
        particleScale: 20.0
        fadeOutDuration: 500
        billboard: true
    }
    ParticleEmitter3D {
        particle: starParticle
        velocity: VectorDirection3D {
            direction: Qt.vector3d(100, 200, 0)
            directionVariation: Qt.vector3d(20, 20, 20)
        }
        particleScaleVariation: 0.4
        emitRate: 50
        lifeSpan: 4000
    }
    Gravity3D {
        magnitude: 100
    }
}

위의 예를 실행하면 다음과 같은 내용이 표시됩니다.

또는 SpriteParticle3D 를 ModelParticle3D 로 대체하여 3D 입자를 얻고 색상 및 회전 변형을 추가하면 출력은 다음과 같습니다.

  • ParticleSystem3D 는 파티클 시스템의 루트입니다. 시스템 타이밍을 처리하고 파티클, 이미 터, 이펙터와 같은 다른 모든 관련 요소를 함께 그룹화합니다. Qt Quick ParticleSystem 과 비교할 때 ParticleSystem3D의 멋진 기능 중 하나는 시간을 자유롭게 애니메이션 할 수 있다는 것입니다. 예를 들어 파티클을 다른 애니메이션과 동기화 할 수 있습니다. 특히 디자이너가 즐기는 또 다른 기능은 입자 시스템을 특정 시드로 무작위 화하여 모든 실행에서 동일한 픽셀 완벽한 입자 효과를 얻을 수 있다는 것입니다.

  • 두 개의 서로 다른 논리적 입자 유형이 지원됩니다 SpriteParticle3D 차원 질감 입자에 대한 ModelParticle3D 3 차원 모델 입자. 모델 입자는 실제로 인스턴스화 된 렌더링을 사용하여 완전한 Quick 3D 재질 및 조명 지원과 함께 수천 개의 입자를 렌더링 할 수 있습니다. 논리 입자는 입자의 일반적인 모양을 정의합니다. 한 가지 중요한 속성은 입자에 대한 데이터를 할당하는 데 사용되는 maxAmount 입니다. Qt Quick 파티클에는이 기능이 없지만 대신 emitRate, lifeSpan 및 burst를 기반으로 데이터를 자동으로 증가시킵니다. 정의를 요구하면 메모리 사용량을 최적화하고 재 할당없이 emitRate 및 lifeSpan을 수정할 수 있습니다.

  • ParticleEmitter3D 는 파티클 의 실제 방출을 처리합니다. 개별 입자의 모양과 방출 방법을 정의하는 많은 속성이 있습니다. 대부분의 속성에는 입자간에 불일치를 추가하기위한 Variation 대응 항목이 있습니다. 다른 입자에서 입자를 방출하려면 TrailEmitter3D 를 사용할 수 있습니다 .

  • 현재 입자가 수명 동안 애니메이션되는 방식을 제어하기위한 4 가지 다른 이펙터가 있으며 앞으로 더 많이 추가 될 것입니다. 여기서는 Gravity3D 이펙터를 사용 하여 입자를 아래로 드래그합니다.

자세한 내용은 Particles3D API 문서 및 Testbed 예제 문서 를 확인하십시오.

성능 노트

모든 Qt 모듈과 마찬가지로 성능은 새로운 3D 파티클 모듈의 핵심 요소 중 하나였습니다. 결국 우리는 파티클이 다양한 하드웨어, 데스크탑, 모바일 및 임베디드 장치에서 사용 가능하기를 원합니다. 즉, 화면에서 입자 요소의 최대량을 렌더링하는 것만이 아닙니다. 사용하기 쉬운 API, 다양한 사용 사례에 대한 확장 성, 렌더링 품질, 다른 UI 요소와의 통합 등도 우리에게 중요합니다.

현재 렌더링은 GPU에서 실행되고 파티클 시스템 로직은 CPU에서 실행됩니다. 우리는 소위 상태 비 저장 파티클 시스템을 사용하고 있습니다.이 시스템은 GPU에서 시스템 로직도 움직일 수 있습니다. 초기 측정은 CPU와 GPU간에 균형이 잘 잡혀 있음을 나타냅니다. 우리의 상태 비 저장 시스템은 또한 파티클이 타임 라인에서 애니메이션 될 수 있기 때문에 향후 더 나은 도구 통합을 허용합니다 (이 예로서 Testbed "Qt Cube Burst"참조). 이미 언급했듯이 모델 입자는 인스턴스 렌더링을 사용하여 성능을 향상시킵니다. 즉, 불행히도 OpenGL ES 2.0으로는 충분하지 않습니다. 적어도 OpenGL ES 3.0, Vulkan 등의 최신 백엔드가 있어야 렌더링 성능을 높일 수 있습니다.

실제 성능을보다 구체적으로보기 위해 아래 비디오는 4 개의 서로 다른 Android 장치에서 실행되는 입자 테스트 베드 애플리케이션을 보여줍니다. 이러한 장치와 칩셋 및 GPU는 저가형 / 중급형으로 간주 될 수 있으므로 입자가 더 저렴한 하드웨어에서도 잘 작동 할 수 있음을 확인합니다.

https://youtu.be/9MqUCP6JLCQ

Qt Quick (2D) 입자는 어떻습니까?

2D Qt Quick 파티클 모듈은 Qt 6에서 여전히 완벽하게 지원되므로 걱정할 필요가 없습니다. Laszlo Agocs는 파티클 모듈을 QRhi로 이식하여 모든 Qt 6 지원 렌더링 백엔드 (OpenGL, Vulkan, Metal 및 D3D11)에서 작동합니다. 나 자신과 다른 커뮤니티 구성원도 다른 정리, 버그 수정 및 최적화를 수행했습니다. 따라서 실제로 Qt 6의 Qt Quick 입자는 그 어느 때보 다 낫습니다. 2D Qt Quick 입자 UI와 함께 계속 사용하면됩니다.

다음에는 무엇?

이 글을 읽고 있고 아직 최신 Qt 6.1 릴리스를 다운로드하지 않았다면 지금 다운로드하십시오. 파티클 테스트 베드 예제를 실행하여 현재 제공하는 내용을 파악하고 소스 코드를 살펴볼 수 있습니다. 그런 다음 3D 입자를 직접 실험하고 자신의 디자인으로 야생 효과를 만들 수 있습니다. 그리고 가장 중요한 요청 : Jira 티켓에 대한 피드백을 제공해주십시오 . 그러면 향후 Qt 릴리스에서 귀하의 요구에 맞게 3D 입자 모듈을 개선 할 수 있습니다. 감사!

728x90
반응형
반응형

Clazy 검사를 사용하여 Qt 5에서 Qt 6으로 포팅

2021 년 3 월 1 일 월요일, Lucie Gérard

Qt 5에서 Qt 6으로 이식하는 데 도움이 필요하면 더 이상 보지 마십시오. Clazy 프레임 워크 내에서 Qt 기반 프로젝트를 이식하는 데 도움이되는 몇 가지 검사 및 수정 사항을 구현했습니다. 이러한 검사는 Clazy 를 컴파일러 플러그인으로 사용하고 .json 파일 에서 clazy-standalone 을 사용하거나 Qt Creator 내에서 실행할 수 있습니다.

Clazy는 clang이 Qt 의미 체계를 이해할 수 있도록 하여 많은 C++ Qt 코드에 대한 경고 및 수정 사항을 제공하는 컴파일러 플러그인입니다. Sergio Martins가 개발한 이 제품은 KDE 산하에 개발되었습니다. 제공된 Qt Creator 바이너리 패키지를 설치하면 clazy가 이미 포함되어 있습니다!

Qt 6 포팅 전용 Clazy 검사

가능한 경우 검사는 수정 사항을 제공하지만 그렇지 않은 경우 경고 만 생성됩니다. 검사는 Qt 5에 대해 실행되어야 하며 고정 코드는 Qt 6으로 만 컴파일됩니다. 이러한 이유로 Clazy가 권장하는대로 하나씩 검사를 실행하지 않고 함께 실행해야 합니다.

다음은 Qt 6 포팅 전용 Clazy 검사 목록입니다.

qt6-deprecated-api-fixes Qt 5.15에서 더 이상 사용되지 않는 API는 Qt 6에서 제거되었습니다 . 검사는 해당 API를 찾아 내고 API에 따라 수정 여부에 관계없이 대체를 제공합니다.
qt6-header-fixes Qt 5에서 Qt 6으로 일부 헤더가 이동되었습니다. 이 검사는 오래된 경로를 Qt 6 경로로 대체합니다.
qt6-qhash-signature qHash, qHashBits, qHashRange와 qHashRangeCommutative 의 검사의 서명을 수정
qt6-fwd-fixes 이 검사는 <QtCore/qcontainerfwd.h> 가 표현하는 forward declaration에 대해 경고합니다. 포워드 선언이 제거되었습니다. 아직 포함되지 않은 경우 <QtCore/qcontainerfwd.h> 가 대신 포함됩니다.
missing-qobject-macro 이 검사는 Q_OBJECT 매크로 없는 QObject 파생 클래스를 찾습니다 .

이제 프로젝트에서 이러한 검사를 실행하는 방법을 살펴 보겠습니다.

Clazy 를 플러그인으로 사용하여 포팅 검사 실행

먼저 Clazy를 다운로드 하거나 버전이 최신인지 확인해야합니다. 버전 1.10에는 더 이상 사용되지 않는 API 수정에 대한 수정 된 검사가 포함될 예정입니다. 그 동안 마스터 브랜치를 사용하십시오

그런 다음 Clazy 로 실행되도록 프로젝트를 설정해야합니다 . qmake 를 사용하는 경우 OS에 따라 명령 줄에 다음을 추가하십시오.

-spec linux-clang QMAKE_CXX="clazy"

-spec macx-clang QMAKE_CXX="clazy"

MSVC가있는 Windows의 경우 다음을 추가하십시오.

QMAKE_CXX="clazy-cl.bat".

cmake 를 사용하는 경우 다음을 추가하십시오.

--DCMAKE_CXX_COMPILER=clazy

명령 줄에.

Qt 6 이식과 관련된 검사 만 활성화하려면 CLAZY_CHECKS다음을 사용하십시오.

export CLAZY_CHECKS="qt6-deprecated-api-fixes, qt6-header-fixes,
qt6-qhash-signature, qt6-fwd-fixes, 
missing-qobject-macro"

수정 사항을 활성화하려면 :

export CLAZY_EXPORT_FIXES=ON

또한 Clazy 가 무시할 디렉토리를 설정하십시오 .

export CLAZY_IGNORE_DIRS=.*lib_dir.*

이렇게하면 Clazy 검사가 라이브러리의 파일에서 실행 되지 않습니다 .

qmake 또는 cmake를 실행 하고 프로젝트를 컴파일하십시오. 각 소스 파일에 대해 <source_file_name> .clazy.yaml 파일이 소스 파일 위치에 생성됩니다. 여기에는 소스 파일과 여기에 포함 된 헤더 파일에 대한 검사 결과 요약과 수정 사항 지침이 포함되어 있습니다.

수정 사항을 적용하려면 프로젝트 디렉터리 경로에서 clang-apply-replacements 를 실행 합니다. 이렇게하면 소스 및 헤더 파일이 수정되므로 코드 백업을 고려하십시오. 수정 사항에 충돌이있는 경우 알림이 표시되고 수정 된 사항이 없습니다.

Qt Creator 내에서 Clazy 검사 및 수정 적용

모든 Clazy 검사를 Qt 6 포팅 전용으로 사용하려면 Qt Creator 버전 14.4.1 이상이 있어야합니다.

Qt Creator에서 프로젝트를 연 후에 는 분석 중에 실행할 Clazy 검사를 선택해야 합니다 . 이것은 '분석기' 아래의 '옵션' 또는 '기본 설정' 창에서 수행됩니다. 검사를 선택하고 새 구성에 저장하면 분석을 실행할 수 있습니다. 검사 결과는 전용 프레임에 나열됩니다. 수정을 선택하고 적용하십시오.

Qt Creator에서 Clazy 검사를 실행하는 방법에 대한 자세한 설명은 이 페이지를 참조하십시오.

Qt Creator 내에서 수정 사항 간의 충돌에 대해 경고하지 않습니다. 동일한 라인에서 발생하는 다른 검사와 관련된 수정 사항을 적용 할 때 주의해야 합니다.

추가 읽기

Clazy에 대한 전체 설명 ( 그것을 얻는 방법과 확인 및 수정 사항을 적용하는 방법)은 여기 에서 찾을 수 있습니다.

clazy-standalone 사용 방법에 대한 지침 은 여기에 있습니다.

여기 에 Qt 6 포팅 전용 페이지도 있습니다.

귀하의 의견

버그를 발견하면 여기에 보고 하고이 게시물의 작성자에게 할당해야 합니다.

사용자의 피드백은 언제나 환영합니다! 특히이 도구가 유용하다고 생각하거나 추가 확인이 필요한 경우 알려 주시기 바랍니다.

728x90
반응형

+ Recent posts