Qt5Compat 라이브러리를 사용하여 Qt 5에서 Qt 6으로 포팅 (Porting from Qt 5 to Qt 6 using Qt5Compat library)
-
Qt5Compat 라이브러리를 사용하여 Qt 5에서 Qt 6으로 포팅 (Porting from Qt 5 to Qt 6 using Qt5Compat library)
- 원문 : https://www.qt.io/blog/porting-from-qt-5-to-qt-6-using-qt5compat-library
- 2020 년 11 월 25 일 수요일 Karsten Heimrich 작성
- 번역 : https://j2doll.tistory.com/672
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 프로젝트 메일링 리스트 및 개발자 포럼의 토론에 참여하는 것도 환영합니다.
번역자 추가
링크
- 미리 보세요 : https://wiki.qt.io/Qt_6.0.0_Known_Issues
- 버그 레포트 : https://bugreports.qt.io/
- 포럼 (영어) : https://forum.qt.io/
- 한글 포럼 : https://forum.qt.io/category/59/korean
예제