Qt의 IDE로서 VC++2008 Express를 이용하는 방법

크로스 플랫폼을 지원하는 GUI 개발 환경 중 하나인 Qt는 오픈 소스로 공개되었으며 많은 운영체제에서 안정적으로 동작합니다.
(상용 프로그램을 개발할 때는 상용 버전을 구매해야 합니다)

그런데, 공개된 버전에는 디자이너까지도 포함되어 있지만, IDE 환경은 포함되어 있지 않습니다. (이런 제길슨)

사용자 삽입 이미지
하지만, Microsoft에서 공개한 Visual C++ 2008 Express Edition을 활용하면 공짜 IDE 환경을 지원받을 수 있습니다.

여기서는 VC++ 2008을 이용해서 Qt 소스를 컴파일하는 것이 아니라, gcc를 이용해서 Qt 소스를 컴파일할 수 있도록 VC++ 2008의 IDE를 이용하는 방법을 소개하겠습니다.

Qt는 크로스 플랫폼 환경을 지원하도록 디자인되기는 했지만, 아무래도 VC++ 계열을 이용하는 것보다는 gcc를 이용하여 컴파일하는 것이 훨씬 수월합니다.





Qt/Windows 설치

1. Qt/Windows Open Source Edition 설치

우선은 (물론!) Qt/Windows를 다운받아 설치해야 합니다.
이 글을 쓰고 있는 현재 시점에서 4.3.4가 공개되었으며, 4.4에 대한 테스트가 진행중입니다.
TROLLTECH 홈페이지에서 오픈소스 버전을 다운받을 수 있습니다.
참고로, TROLLTECH의 FTP에 접속하시면 구버전부터 최신버전까지 버전별로 다운로드받을 수 있습니다.

다운받은 파일명은 qt-win-opensource-4.x.x-mingw.exe와 같은 형식이며, 이 파일을 더블클릭해서 설치합니다.

사용자 삽입 이미지

현재 시점에서 Qt의 최신버전은 4.3.4


2. 디버그 라이브러리 빌드

1번에서 이어지는 Qt 기본 설치과정입니다.
디버그용 라이브러리빌드합니다.
시작 메뉴에서 Qt by Trolltech v4.x.x (OpenSource) - Qt 4.x.x (Build Debug Libraries)를 클릭하면 됩니다.

사용자 삽입 이미지

빨간색. 내가 빨간색 하면 빨간색이야! (송강호 버전)


3. Qt 바이너리 컴파일

Qt의 커맨드 프롬프트에서 작업합니다.
2번의 파란색으로 표시된 Qt 4.x.x Command Prompt를 클릭해서 작업해야 합니다.

configure -platform win32-g++ [엔터]
(환경변수 QMAKESPEC이 이미 win32-g++로 설정되어 있기 때문에 configure 만 입력해도 됩니다)

라이선스가 어쩌고 하는 질문이 나오면 아무 생각 없이 y [엔터]를 입력합니다.
다소의 시간이 지나면 작업이 완료됩니다.

mingw32-make [엔터]

이 단계에서는 엄청나게 긴 시간이 소요됩니다.
컴파일이 되어가는 것 같으면 PC 앞을 떠나있는 것이 좋습니다.

사용자 삽입 이미지





Visual C++ 2008 Express 설치

4. Visual C++ 2008 Express 다운로드 및 설치

Microsoft의 Visual Studio Express Editions 홈페이지에서 Visual C++ 2008 Express Edition을 다운받아 설치합니다.
(웹 인스톨 버전과 풀버전(ISO)을 선택해서 다운받을 수 있습니다)
상세한 설치과정은 생략합니다.
 
사용자 삽입 이미지

여긴 Web install 버전 다운받는 곳 ^^;;;





Windows/VC++ 환경변수 설정

5. Windows 환경변수 설정

기본적으로 Qt로 개발된 소스는 3번에서 얘기한 Qt 커맨드 프롬프트에서 gcc를 이용해서 컴파일합니다.
(Visual C++를 이용하여 컴파일하는 방법도 있지만, 이 글은 VC++의 IDE만 이용하고 gcc를 사용하는 방법에 대한 글입니다)

즉, 윈도우 환경에서 Qt의 환경변수들을 미리 등록해야 합니다.
일단 추가할 내용은 아래와 같습니다.
PATH : c:\Qt\4.x.x\bin;c:\MinGW\bin
QMAKESPEC : win32-g++
QTDIR : c:\qt\4.x.x

4.x.x로 표기한 것은 실제 폴더명을 기록하면 되며, 이미 있는 환경변수라면 내용을 추가하면 됩니다.

그리고, 시스템 변수 중에 PATHEXT를 보면 .dll이 빠져있는데, .dll도 같이 추가합니다.
PATHEXT : .dll

사용자 삽입 이미지

6. Visual C++ 환경 설정

VC++ IDE의 인텔리 센스에서 Qt의 라이브러리를 인식할 수 있도록 지정하면 통합환경 다운 통합환경을 활용할 수 있습니다.
아래의 폴더들을 Include Files 위치에 등록합니다.
등록위치는 Tools - Options... - Project and Solution - VC++ Directory - Include File입니다.
역시, 4.x.x는 실제 설치된 폴더를 지정하면 됩니다.
c:\Qt\4.x.x\include\ActiveQt
c:\Qt\4.x.x\include\Qt
c:\Qt\4.x.x\include\Qt3Support
c:\Qt\4.x.x\include\QtAssistant
c:\Qt\4.x.x\include\QtCore
c:\Qt\4.x.x\include\QtDBus
c:\Qt\4.x.x\include\QtDesigner
c:\Qt\4.x.x\include\QtGui
c:\Qt\4.x.x\include\QtNetwork
c:\Qt\4.x.x\include\QtOpenGL
c:\Qt\4.x.x\include\QtScript
c:\Qt\4.x.x\include\QtSql
c:\Qt\4.x.x\include\QtSvg
c:\Qt\4.x.x\include\QtTest
c:\Qt\4.x.x\include\QtUiTools
c:\Qt\4.x.x\include\QtXml

사용자 삽입 이미지

일일이 지정해야 한다는 거…


※ 1~6번까지의 과정은 한 번만 하면 됩니다.





프로젝트 만들기

7. 새 프로젝트 생성

New Project - Visual C++ - General에서 Makefile Project를 선택하고나서,
적절한 이름을 입력한 후에 OK 버튼을 클릭합니다.
여기서는 QtTest라는 이름을 쓰도록 하겠습니다.

사용자 삽입 이미지

다음 화면이 나오면 그냥 Finish 버튼을 클릭합니다.

사용자 삽입 이미지

8. NMAKE 설정

서두에서도 밝혔듯이, 이 방법은 VC++IDE만 사용하고, 실제 컴파일gcc가 하도록 하는 방법입니다.
IDE 화면에서 프로젝트 명(QtTest)에서 오른쪽 버튼을 클릭하여 Properties 메뉴를 선택합니다.

사용자 삽입 이미지

아래 화면이 나오면 Release/Debug에서 각각 NMake의 각 항목들을 적절하게 입력해야 합니다.

사용자 삽입 이미지

Debug

Build Command Line
qmake -project
qmake
mingw32-make -f Makefile.Debug

Rebuild All Command Line
make clean
qmake -project
qmake
mingw32-make -f Makefile.Debug

Clean Command Line
make clean

Output
debug\QtTest.exe

Release

Build Command Line
qmake -project
qmake
mingw32-make -f Makefile.Release

Rebuild All Command Line
make clean
qmake -project
qmake
mingw32-make -f Makefile.Release

Clean Command Line
make clean

Output
release\QtTest.exe

둘의 내용은 거의 같고, 디버그 모드와 릴리즈 모드를 선택하는 Makefile의 이름과 폴더만 다를 뿐입니다.


9. C++ 소스 파일 추가

IDE 화면에서 프로젝트 명(QtTest)에서 오른쪽 버튼을 클릭하여 Add - New Item 메뉴를 클릭합니다.
(8번 그림 참조)
여기서 C++ File(.cpp)을 지정하고 원하는 파일명을 적어줍니다. (여기서는 main.cpp로 했습니다)

사용자 삽입 이미지

잘 동작하는지를 확인하기 위해 여기에 아래와 같은 샘플 코드를 입력해봅니다.

#include <QApplication>
#include <QPushButton>

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

    QPushButton hello( "Hello world!" );
    hello.resize( 200, 60 );

    hello.show();
    return app.exec();
}
아래와 같은 결과가 실행되면 모든 작업이 완료된 것입니다.

사용자 삽입 이미지

전 지구인이 사용하는

그럼 Qt의 세계에 빠~져 봅~시다!