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 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를 다운로드 하거나 버전이 최신인지 확인해야합니다. 버전 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 를 실행 합니다. 이렇게하면 소스 및 헤더 파일이 수정되므로 코드 백업을 고려하십시오. 수정 사항에 충돌이있는 경우 알림이 표시되고 수정 된 사항이 없습니다.
모든 Clazy 검사를 Qt 6 포팅 전용으로 사용하려면 Qt Creator 버전 14.4.1 이상이 있어야합니다.
Qt Creator에서 프로젝트를 연 후에 는 분석 중에 실행할 Clazy 검사를 선택해야 합니다 . 이것은 '분석기' 아래의 '옵션' 또는 '기본 설정' 창에서 수행됩니다. 검사를 선택하고 새 구성에 저장하면 분석을 실행할 수 있습니다. 검사 결과는 전용 프레임에 나열됩니다. 수정을 선택하고 적용하십시오.
Qt Creator에서 Clazy 검사를 실행하는 방법에 대한 자세한 설명은 이 페이지를 참조하십시오.
Qt Creator 내에서 수정 사항 간의 충돌에 대해 경고하지 않습니다. 동일한 라인에서 발생하는 다른 검사와 관련된 수정 사항을 적용 할 때 주의해야 합니다.
Clazy에 대한 전체 설명 ( 그것을 얻는 방법과 확인 및 수정 사항을 적용하는 방법)은 여기 에서 찾을 수 있습니다.
clazy-standalone 사용 방법에 대한 지침 은 여기에 있습니다.
여기 에 Qt 6 포팅 전용 페이지도 있습니다.
버그를 발견하면 여기에 보고 하고이 게시물의 작성자에게 할당해야 합니다.
사용자의 피드백은 언제나 환영합니다! 특히이 도구가 유용하다고 생각하거나 추가 확인이 필요한 경우 알려 주시기 바랍니다.
'Qt' 카테고리의 다른 글
2021년 Qt 로드맵 (Qt Roadmap for 2021) (0) | 2021.04.30 |
---|---|
Qt Quick의 3차원 입자 소개 (Introducing Qt Quick 3D Particles) (0) | 2021.04.17 |
Qt 및 CMake : 과거, 현재 및 미래 (0) | 2021.02.12 |
[Qt Blog] 그래픽 소프트웨어에서 디자인 내보내기 (Exporting Designs from Graphics Software) (0) | 2020.12.25 |
Qt5Compat 라이브러리를 사용하여 Qt 5에서 Qt 6으로 포팅 (0) | 2020.12.05 |