2011. 7. 12.

Qt 4.8 설치하기 (Qt Lighthouse)

드디어 오랜 동안 연구 프로젝트로 사용되던 Qt Lighthouse가 연구 프로젝트에서
실제 Qt repository로 들어가게 되었다.
이말의 의미는 Qt 4.8에는 Lighthouse처럼 Qt가 X library나 X windows를 거치지 않고,
직접적으로 Kernel을 통하여 Rendering이 가능하게 된다는 의미가 된다.

따라서 기존에 쓰이는 lighthouse git (git://gitorious.org/+qt-developers/qt/lighthouse.git) 은 더이상 쓰이지 않게 되었으며, 그냥 역사적의미로만 남겨둔다고 한다.

Lighthouse is no longer a research project. It is now a part of Qt 4.8, and will be the foundation for Qt 5. This repository is now closed.

Old repository description for historical purposes.
위에 내용은 expired된 예전 git에서 그대로 복사해온 것이고 이제 QPA ( project name: Lighthouse)를 쓰기 위해서는 Qt 4.8을 qt gitorious에서 그대로 받아 오면 된다.
Cloning this repository:
git clone git://gitorious.org/qt/qt.git qt
cd qt
Add this repository as a remote to an existing local repository:
git remote add qt git://gitorious.org/qt/qt.git
git fetch qt
git checkout -b my-local-tracking-branch qt/4.8
위의 Checkout 시 적절한 이름 my-local-tracking-branch나 qpa-branch 등과 같이 사용해서 checkout 해주고, configure/make/make install 의 과정을 거치면 된다.
필자가 사용한 configure를 예제로 하자면 다음과 같다.

# ../qt/configure -prefix /usr/local/qt-qpa -confirm-license -qpa -developer-build -verbose  2>&1 | tee MyConfigure.log
# make -j4   (j이후의 숫자는 자신의 CPU수에 맞춰서 알아서, 느린 PC의 경우에는 그냥 make)
# make install (sudo make install)

그리고 다음으로 해주어야 하는 작업이 있는데
# cd /"qt 4.8 src folder"/src/plugins/platforms
# make 
# make install

해주면 현재 platform에서 사용할 수 있는 plugin들을 설치 해준다.
현재 4.8버전에서 지원해 주는 plugin은 다음과 같다.
cocoa      (Macintosh 환경)
directfb    (DirectFB 환경)
eglfs        (egl 환경)
fb_base
linuxfb      (Linux Framebuffer 환경)
minimal
openkode  (openkode 환경)
qvfb          (Virtual Frame buffer 환경)
uikit          (iOS 환경)
vnc           (vnc 환경)
wayland    (wayland환경)
xcb
xlib           (X Window 환경)

위와 같이 platform을 구축해 주면
다음과 같이 실행 시킬 수 있다.

실행 방법

# ./qtapplication -platform Xlib
# ./qtapplication -platform cocoa
# ./qtapplication -platform directfb


2011. 7. 1.

Byte Order conversion in Qt (Qt에서 Endian 전환)


- Endian Conversion Functions


    Qt 에서 엔디안 바이트 전환은 다음의 함수 들을 통해 편리하게 할 수 있다.

      상당히 편리하고 유용하다.
       필자도 Endian conversion 때문에 골치 아픈 경우가 있었는데,


#include <QtEndian>

    한줄을 header파일로 추가 하고 간단히 해결 하였다.

Functions


T

qFromBigEndian
 ( const uchar * src )
TqFromBigEndian ( T src )
TqFromLittleEndian ( const uchar * src )
TqFromLittleEndian ( T src )
voidqToBigEndian ( T src, uchar * dest )
TqToBigEndian ( T src )
voidqToLittleEndian ( T src, uchar * dest )
TqToLittleEndian ( T src )



Qt 에서 64 bit Data를 Hex값으로 출력하고 싶을 때

How to make 64bit data value into Hex display?

물론 Qt 에서 사용하는 QDebug()를 사용하면 된다.

너무 간단한 solution이지만, 실제 코딩할 때 쓸데없이 시간 소모가 되는 경우가 있으므로 정리

uint64_t TimeStamp;
or
qint64 TimeStamp;


 qDebug(" Transmit TimeStamp(hex) = %llx ", TimeStamp);