Contents |
Languages: عربي | Asturianu | Català | Česky | Kaszëbsczi | Dansk | Deutsch | English | Esperanto | Español | Eesti | فارسی | Suomi | Français | Galego | Italiano | 日本語 | 한국어 | Norwegian | Polski | Português Brasileiro | Română | Русский | Svenska | Slovenčina | Slovenščina | српски | Türkçe | Tiếng Việt | Українська | 简体中文 | 繁體中文
이 튜트리얼은 Qt3/KDE3 기반의 어플리케이션을 Qt4/KDE4로 포팅하도록 돕는 것을 목적으로 하고 있다. KD3 기반의 어플리케이션을 포팅하는 것은 어려운 과정이 필요 없다. 이미 도와줄 수 있는 많은 스크립트와 문서의 소스들이 존재한다. A tutorial intended to help developers port their Qt3/KDE3 based applications to Qt4/KDE4. Porting a KDE3 based application needn't be a difficult process. Already, there are many scripts and sources of documentation which can help.
튜트리얼에서 이 설명들을 위해, 다음과 같은 약어를 사용할 것이다.
KDE3과 달리, KDE4 어플리케이션은 CMake의 도움으로 빌드할 수 있다. 당신의 autotolls 시스템을 CMake로 쉽게 포팅하는 방법은 kdesdk 모듈의 cmake/scripts 디렉토리 안에서 찾을 수 있는 am2cmake 스크립트를 사용하는 것이다. 이것은 당신의 오래된 빌드 시스템 파일와 함께 CMakeLists.txt 파일 시리즈를 생성할 것이다.
예를들어, 만약 당신의 소스코드가 /path/to/src에 위치같다면 다음과 같다.
For example, if your source code is located in /path/to/src then:
% cd /path/to/src
% $SVN/trunk/KDE/kdesdk/cmake/scripts/am2cmake --kde4
--kde4 플래그가 필요할 필요가 있는지 검사하기 위해, am2cmake --help를 실행하라.
잠재된 문재들을 위하여, CMakeList.txt를 당신의 결과로 보여주는 또 하나의 툴이 있다. 이 툴은 $SVN/trunk/kde/kdesdk/scripts 안에 위치한 cmakelint.pl이다. 이것은 다음과 같이 사용한다.:
% cd /path/to/src
% $SVN/trunk/KDE/kdesdk/scripts/cmakelint.pl CMakeLists.txt
또는 당신의 전체 소스 디렉토리에 걸쳐서 실행한다.
% cd /path/to/src
% find . -name CMakeLists.txt | \
xargs $SVN/trunk/KDE/kdesdk/scripts/cmakelint.pl
Qt4로 변경하는 Qt3에서 개요는 트롤테크의 "Qt 3에서 Qt 4로 이동하기"에서 제공되어진다. 이 문서는 Qt4의 주요 기능 변화에 대한 훌륭한 개요를 제공하며, 매우 추천할만 하다.
"Moving from Qt 3 to Qt 4" paper. This document provides an excellent overview into the major functionality changes with Qt4 and is highly recommended.
"Qt 4로 포팅하기" 페이지는 클래스와 함수의 변화 리스트에 따라 놀라울 정도로 포팅 과정 설명을 제공한다. The follow-on "Porting to Qt 4" page gives an amazingly detailed description of the porting process, along with a list of the changes in the classes and functions.
이 문서들은 당신의 Qt 코드 부분을 Qt3에서 Qt4로 호환되는 함수를 사용하여 포팅할 수 있으며, 트롤테크이 제공하는 qt3to4도구에 대해 설명한다. qt3to4를 다음과 같이 실행하라.
% $SVN/trunk/qt-copy/bin/qt3to4 [options] <Infile>, [Infile], ...
Infile은 소스파일이나 프로젝트 파일이 될 수 있다. 만약 (.pro 혹은 .pri로 끝나는)프로젝트 파일을 설정했다면, 프로젝트 안에 설정된 모든 파일이 포팅될 것이다.
좀 더 많은 정보를 위해서는 qt3to4를 --help 옵션으로 실행하라. 좀 더 많은 정보를 위해서는,"qt3to4-Qt 3를 Qt4로 포팅하는 도구" 페이지를 방문하라.
the "qt3to4-The Qt 3 to 4 Porting Tool" page.
추가적으로 당신을 위해 반대되는 Qt3의 많은 것들을 검색하거나 대신할 kdesdk 모듈 안의 remove-qt3-support.pl라고 불리는 프로그램이 존재한다. 이 프로그램은 소스 디렉토리 안에서 어떤 옵션 없이 간단히 실행된다.
% $SVN/trunk/KDE/kdesdk/scripts/qt4/remove-qt3-support.pl
포팅시도의 대부분은 간단히 다시 이름 붙여진 클래스 이름과 헤더파일을 구성한다. 수동으로 이 모든 것을 변화시키는 것은 약간 지루할 것이므로, kdesdk의 scripts/qt4안에 다루기 쉬운 adapt-to-kde4-api.pl라는 스크립트가 존재한다. 이것은 당신의 파일을 모두 검사할 것이고, 당신의 코드를 패치하는 데 사용될 수 있는 diff 출력을 만들어 낼 것이다.
간단한 코드 변경은 수행되었다.. 당신은 아직도 당신의 코드를 포팅하도록 해야할 것이다.(예를 들어 새로운 KAction API와 같은 것들..) 모든 API 변화에 대한 문서는 kdelibs에KDE4PORTING.html에 보관되어 있다.
Qt3를 사용하여 생성된 Qt 디자이너 ".ui"파일은 새로운 Qt4 포맷으로 변환되어야 한다. 이것은 당신의 Qt4 설치 버전에서 사용 가능한 uic3 프로그램을 사용하여 수행될 수 있다.
% $SVN/trunk/qt-copy/bin/uic3 -convert file.ui > foo.ui
% mv foo.ui file.ui
또는 그래픽 도구를 원한다면, Qt4의 디자이너 프로그램을 사용할 수 있다.
% $SVN/trunk/qt-copy/bin/designer file.ui
(you can save file.ui over top itself, or save to a new file)
당신은 kdesdk 모듈에서 fixuifiles프로그램을 실해야할 한다. 이것은 청소(cleanup)완전성 검사(sanity checks)를 수행한다.
% $SVN/trunk/KDE/kdesdk/scripts/fixuifiles
DCOP in KDE3 대신, KDE4에서는 이제 IPC를 위해 D-Bus를사용한다. DCOP에서 D-Bus로 포팅하는 것은 D-Bus로 포팅하기 튜트리얼에서 아주 세부적으로 다루어지는 큰 주제이다.
좀더 세부적인 정보는, D-Bus 튜트리얼를 살펴 보라.
KDE는 아이콘 이름을 위해 freedesktop.org icon naming specification를 기초로 사용한다. 이것은 KDE4(Oxygen)에서 사용되는 아이콘과 아이콘을 사용하는 kdelibs 컴포넌트 둘 다 이 명세에 따른다는 것을 의미한다.
당신의 어플리케이션을 KDE3에서 사용되는 아이콘 이름에서 KDE3가 사용하는 것으로 포팅하는 것은 루트 디렉토리에서 adapt-to-icon-spec.py를 실행하고 화면의 설명에 따르기만 하면 되기 때문에 쉽다.
자동적으로 확실한 긍정을 변환하고(예를 들어, KIcon 혹은 KIconLoader의 사용), 확실한 부정은 유지하며, 가능한 긍적이 무엇인지 알려준다. 이것을 원하거나 만들 것인지에 대한 추가적인 내용들을 나중에 보여주며, 포팅을 완료하기 위해 'y'나 'n'을 누르는 간단한 것으로 만든다.
To create your ".pot" file, copy the commands from the 'messages' rule in your projects Makefile.am to a shell script called Messages.sh. You may assume the same variables ($PREPARETIPS, $XGETTEXT, $podir, etc.) still exist, but keep in mind the differences between Makefile and shell script syntax.
Also be careful that if you use the -k parameter with $XGETTEXT, you will need to explicitely list all variants that you use.
For example, the 'messages' creation rule:
messages: rc.cpp
rm -f tips.cpp
$(PREPARETIPS) > tips.cpp
$(XGETTEXT) -ktranslate *.cpp *.h -o $(podir)/kmail.pot
rm -f tips.cpp
becomes the following Messages.sh script:
$PREPARETIPS > tips.cpp $XGETTEXT -ktranslate:1,1t -ktranslate:1c,2,2t *.cpp *.h -o $podir/kmail.pot rm -f tips.cpp