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

Qt5Compat 라이브러리를 사용하여 Qt 5에서 Qt 6으로 포팅 (Porting from Qt 5 to Qt 6 using Qt5Compat library)

Qt 5에서 Qt 6으로 이식하는 것은 의도적으로 쉽게 설정되었습니다. 가능한 한 Qt 5와의 소스 호환성을 유지하기 위해 Qt 6 개발 과정에서 의도적인 노력이 있었습니다. 그래도 포팅에는 약간의 노력이 필요합니다. 이 짧은 게시물은 Qt 6으로 이식할 때 필요한 몇 가지 단계를 요약합니다.

Qt 5에서 일부 클래스는 이미 기존 대체품이 있었고 일부 클래스 는 Qt 6 개발 단계에서 후속 클래스를 얻었습니다. 따라서 이전 버전과 새 Qt 버전 모두로 코드를 컴파일 할 수 있는 것이 합리적일 수 있습니다. 이렇게 하면 코드가 어떤 버전으로도 컴파일되지 않는 작업량을 최소화 할 수 있으므로 애플리케이션이나 라이브러리가 Qt 5 및 Qt 6에서 계속 작동할 수 있습니다. 또 다른 이점은 기존 단위 테스트가 대부분의 경우 계속 작동한다는 것입니다. 이식 기간 및 코드 이식으로 인한 회귀(regression)는 Qt 6에 도입된 버그와 쉽게 구분됩니다.

타입 (Type)

아래 표에는 Qt 6에서 제거되었지만 이식의 용이성을 위해 Qt5Compat에 보관된 클래스가 나열되어 있습니다. 또한 Qt 6의 새 코드에서 대신 사용할 클래스도 포함합니다.

Qt 5 클래스 Qt 6 교체
QLinkedList std::list *
QRegExp QRegularExpression
QStringRef QStringView
QXmlSimpleReader QXmlStreamReader
QTextCodec QStringConverter
QTextEncoder QStringEncoder
QTextDecoder QStringDecoder
  • 링크드 리스트(linked list)의 참조(reference) 안정성이 필요하지 않은 경우 QList 사용도 고려할 수 있습니다.

빌드 시스템 선택

위에서 언급한 Qt 5 클래스를 계속 사용하려면 먼저 새 Qt5Compat 모듈에 연결하도록 빌드 시스템을 조정해야 합니다. 예를 들어 qmake 빌드 시스템 사용자는 다음 줄을 추가합니다.

  • .pro 파일 :
QT += core5compat

애플리케이션 또는 라이브러리를 cmake 빌드 시스템으로 포팅한 경우에는 다음을 추가하십시오

  • CMakeList.txt
PUBLIC_LIBRARIES
Qt::Core5Compat

include 수정 하기

분명히 필요한 빌드 시스템 변경 외에도 앞서 언급한 클래스의 include를 수정해야 할 수도 있습니다.

실제 코드는 다음과 같습니다.

#include <QtCore/QRegExp>

새 Qt5Compat 모듈에 대해 업데이트 합니다.

#include <QtCore5Compat/QRegExp>

또는 훨씬 더 간단하고 휴대 가능한 버전을 사용하십시오.

#include <QRegExp>

Qt 6로의 기대

Qt 6이 다가 오면 이미 새로운 Qt 6 베타 버전 테스트를 고려할 수 있습니다. 또한 위에서 언급한 몇 가지 Qt Core 클래스 변경으로 인해 코드가 영향을 받는 경우 조기 테스트가 가능합니다. 발견할 수 있는 문제에 대해서는 bugreports.qt.io에 자세한 버그 보고서를 제출하십시오. 버그 보고서를 제출할 때 문제를 발견한 Qt 버전을 언급하고 중복 및 알려진 문제를 확인하십시오. Qt 프로젝트 메일링 리스트 및 개발자 포럼의 토론에 참여하는 것도 환영합니다.

번역자 추가

링크

예제

728x90
반응형
728x90
반응형

Qt 5 Core 호환성 API (Qt 5 Core Compatibility APIs)

Qt 5 Core Compat 모듈은 Qt 6에서 더 이상 지원되지 않고, Qt 6에서 제거된 Qt Core API가 포함되어 있습니다. 이 모듈은 Qt 6으로의 전환을 용이하게 하기 위해 제공됩니다.

모듈 사용

Qt 모듈을 사용하려면, 직접 또는 다른 종속성을 통해 모듈 라이브러리에 연결해야 합니다. CMake 및 qmake를 포함하여 여러 빌드 도구에 이를 위한 전용 지원이 있습니다.

CMake로 빌드하기

find_package() 명령을 사용하여 Qt6 패키지에서 필요한 모듈 구성 요소를 찾습니다.

find_package(Qt6 COMPONENTS Core5Compat REQUIRED)
target_link_libraries(mytarget PUBLIC Qt6::Core5Compat)

CMake로 빌드 개요도 참조하세요.

qmake로 빌드하기

qmake로 빌드하기 위한 모듈을 구성하려면 Qt 프로젝트의 .pro 파일에 있는 변수 값으로 모듈을 추가 합니다.

QT += core5compat

라이선스 및 귀속 (Licenses and Attributions)

Qt 5 Core Compat는 The Qt Company의 상업용 라이선스 에 따라 사용할 수 있습니다. 또한 무료 소프트웨어 라이선스 (GNU Lesser General Public License, version 3 또는 GNU General Public License, version 2) 에 따라 사용할 수 있습니다. 자세한 내용은 Qt 라이선스를 참조 하십시오.

또한 Qt 6.0.0의 Qt 5 Core Compat에는 다음같이 허용되는 라이선스에 따라 타사 모듈이 포함되어 있습니다.

모듈 라이선스
Text Codec: EUC-JP BSD 2-clause "Simplified" License
Text Codec: EUC-KR BSD 2-clause "Simplified" License
Text Codec: GBK BSD 2-clause "Simplified" License
Text Codec: ISO 2022-JP (JIS) BSD 2-clause "Simplified" License
Text Codec: Shift-JIS BSD 2-clause "Simplified" License
Text Codec: TSCII BSD 2-clause "Simplified" License
Text Codecs: Big5, Big5-HKSCS BSD 2-clause "Simplified" License
728x90
반응형

+ Recent posts