Linux/QT

[QT] qmake

aucd29 2013. 9. 26. 20:44
앞으로의 Qt Tutorial 강좌는 Qt/X11 4.0.0 버전으로 작업을 진행하게 됩니다.
Qt/X11 3.x 버전과 Qt/X11 4.0.0 버전은 약간의 차이가 존재하여 프로그램이 제대로
동작되지 않을 수 있으믈, 아래의 Tutorial을 제대로 실행해 보고 위해서는
Qt/X11 4.0.0 버전을 먼저 설처하시기 바랍니다.
만약, 시스템에 이미 Qt/X11 3.x 버전이 설치된 상태에서 Qt/X11 4.0.0 버전을 설치하였다면
아래와 같이 임시적으로 환경변수를 설정해서 Qt/X11 4.0.0 버전으로 컴파일 할 수 있도록
하면 됩니다.

[code][korone@koronelinux example]export QTDIR=/usr/local/Trolltech/Qt-4.0.0/
[korone@koronelinux example]$ export PATH=$QTDIR/bin:$PATH[/code]

만약, 계속적으로 하길 원한다면, 위 내용을 .profile등에 적당히 추가해 주시면 됩니다.
성공적으로 설정했다면
qmake --version을 입력했을때 이전 Qt/X11 3.x 버전 호환의 qmake가 실행되어서는
안됩니다.
[code][korone@koronelinux example]$ qmake --version
QMake version: 2.00a
Using Qt version 4.0.0 in /usr/local/Trolltech/Qt-4.0.0/lib[/code]

Qt Tutorial 1 - Hello, World!
대부분의 프로그래밍 언어를 처음 배울때 하는것인, Hello, World를 출력하는 예제를
처음 작성해 보는것이 일종의 관례처럼 되었습니다.
Qt 역시 마찬가지로 Hello, World!라는 문자열을 화면에 표시하는것으로 Tutorial 의
첫번째를 시작합니다.

아래의 그림은, Tutorial에서 작성하면 볼 수 있는 결과를 나타냅니다.


먼저, 위의 그림처럼 실행되는 코드를 한번 보겠습니다.
[code]#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QPushButton hello("Hello world!");
    hello.resize(100, 30);

    hello.show();
    return app.exec();
}[/code]

Qt는 C++언어이므로 확장자를 cpp혹은 cc로 지정하시면 됩니다.
여기서는 hello.cpp 로 저장하는것으로 가정하고 진행토록 하겠습니다.

위 코드를 다 작성했다면, 편집기를 종료하고 shell prompt 상에서 아래와 같이 입력 합니다.
[code][korone@koronelinux hello]$ qmake -project
[korone@koronelinux hello]$ qmake[/code]

위의 명령어 qmake는 Qt에서 제공하는 아주 편리한 project 생성 툴입니다.
일반적으로 Unix/Linux에서 gcc/g++을 이용해 프로그래밍을 하는 경우
Makefile을 작성하고 컴파일시 make를 이용해서 컴파일하는데
qmake는 Makefile 생성시, Makefile 생성에 필요한 각종 문법에 대해서 미리 숙지하지 않아도
자동으로 알아서 Makefile을 새성해 주는 역할을 합니다.

먼저 아래의 명령어 부터 한번 보겠습니다.
[code][korone@koronelinux hello]$ qmake -project[/code]

앞서 말한데로 qmake는 Makefile을 자동으로 생성하기 위한 유용한 도구입니다.
qmake 뒤에 -project는 현재 디렉토리내의 헤더(.h) 또는 소스(.cpp 또는 .cc)파이를
자동으로 읽어서 qmake 가 해석할 수 있는 project 파일을 생성합니다.
이때, hello.cpp 파일이 $HOME/hello 라는 디렉토리에 있는 상태에서 위 명령어를 입력했을 경우
qmake -project 명령어는 자동으로 현재 디렉토리명.pro 이름의 project 파일을 생성합니다.
여기서는 hello.cpp 파일이 hello 라는 디렉토리내에 있다고 가정하였으므로
hello.pro 파일이 생성됩니다.

이 다음 아래와 같이 입력을 하였습니다.

[code][korone@koronelinux hello]$ qmake[/code]
위 명령을 입력하면, 이미 생성된 프로젝트 파일인 hello.pro 를 이용해서 Makefile을 자동적으로
생성합니다.위 명령어를 직접 입력해 보시면, 입력하기 전후 Makefile의 생성유무를 확인할 수 있습니다.

이제 Makefile을 생성공적으로 마쳤으므로, make를 해서 컴파일 할 수 있는 환경이 갖추어 졌습니다.
아래와 같이 make를 해보세요.
[code][korone@koronelinux hello]$ make
g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-4.0.0/mkspecs/default -I. -I/usr/local/Trolltech/Qt-4.0.0/include/QtGui -I/usr/local/Trolltech/Qt-4.0.0/include/QtCore -I/usr/local/Trolltech/Qt-4.0.0/include -I. -I. -I. -o hello.o hello.cpp
g++ -Wl,-rpath,/usr/local/Trolltech/Qt-4.0.0/lib -o hello hello.o -L/usr/local/Trolltech/Qt-4.0.0/lib -L/data2/qt/qt-x11-eval-desktop-4.0.0/lib -lQtGui_debug -L/usr/X11R6/lib -lpng -lSM -lICE -lXi -lXrender -lXrandr -lXcursor -lXinerama -lfreetype -lfontconfig -lXext -lX11 -lm -lQtCore_debug -lz -ldl -lpthread[/code]
위와 같이 아무런 에러없이 컴파일이 완료되면 hello 파일이 생성됩니다.
이 파일을 ./hello 처럼 실행시키면, 처음 그림처럼 실행되는 화면을 보실 수 있습니다.

이제 실제 소스코드의 내요을 하나하나 살펴보도록 하겠습니다.
#include <QApplication>
아 include는 QApplication을 사용하기 위한 header include 입니다.