- 원문 : https://www.qt.io/blog/porting-from-qt-5-to-qt-6-using-qt5compat-library?utm_campaign=Qt%206&utm_content=148028959&utm_medium=social&utm_source=facebook&hss_channel=fbp-148831668484831
- 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에 도입된 버그와 쉽게 구분됩니다.
아래 표에는 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 <QtCore/QRegExp>
새 Qt5Compat 모듈에 대해 업데이트 합니다.
#include <QtCore5Compat/QRegExp>
또는 훨씬 더 간단하고 휴대 가능한 버전을 사용하십시오.
#include <QRegExp>
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
'Qt' 카테고리의 다른 글
Qt 및 CMake : 과거, 현재 및 미래 (0) | 2021.02.12 |
---|---|
[Qt Blog] 그래픽 소프트웨어에서 디자인 내보내기 (Exporting Designs from Graphics Software) (0) | 2020.12.25 |
Qt 5 Core 호환성 API (0) | 2020.12.05 |
최초의 Qt 6.0 스냅샷 제공 (First Qt 6.0 Snapshot Available) (0) | 2020.06.21 |
QUIP | Qt 커뮤니티 행동 강령 (0) | 2020.06.13 |