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
반응형

+ Recent posts