달력

42024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

.pro( Qt Project file )

QT Creator로 프로젝트를 생성하면 해당 프로젝트 명의 '.pro' 프로젝트 파일이 생성된다.  '.pro'  파일은 QT 프로젝트를 구성하는 파일이고 qmake 를 통해 자동적으로 Makefile을 만들 수 있다. 


.pri( Qt Project Include file )

.pri 파일은  .pro 파일의 형식과 완전히 동일하고 일반적으로 프로젝트 포함 파일이라고 한다. 기본적으로 기능을 공유하기 위해 프로그래밍 언어로 모듈을 포함하는 것과 유사하다. 공통적으로 필요한 환경을 .pri파일에 설정하고 .pro파일에 'include( .pri 파일 경로)' 또는 'include($$PWD/***.pri)' 해서 사용한다.


qmkae

유닉스/리눅스에서 컴파일 할 때 주로 Makefile을 사용하지만 Makefile 자체를 익히는데는 많은 시간이 필요하다.

Makefile을 쉽게 생성해주는 여러가지 툴들이 있는 qmake는 QT에서 주로 사용하는 다중 플랫폼용 Makefile 생성툴이다.

QT Project를 생성하면 '.pro' 파일이 생성되는데 '.pro'파일에 qmake 문법에 맞게 기술한 후 'Run qmake'를 실행하면

유닉스, 리눅스 용 Makefile이 생성된다. ( Run qmake는 QT Creator 에서 Popup 메뉴로 실행 시킬 수 있다. )

Qmake에 대한 자세한 사항은 qmake Manual , qmke Function Reference 을 참고하면 된다.

'.pro' 파일에 기술하는 qmake 문법은 유닉스/리눅스에서 사용하는 쉘스크립트 문법과 유사하다.

qmake에서 사용하는 시스템 변수에 값을 대입하면 된다.

주석은 '#'로 시작한다. '.pro' 또는 '.pri' 파일내에서 변수를 사용할 수 있는데 사용할 변수 앞에 '$$'를 붙여 주면 된다.

여러줄을 기술할 때는 '\'( 백슬러시 )를 사용하면 된다.


INCLUDERPATH = $$PWD \

                          ./lib

HEADERS = ../hdr
SOURCE = main.cpp \
               $$INCLUDERPATH

SOURCE += ../src


qmake의 시스템 변수

TEMPLATE

프로젝트 파일의 타입을 정의한다. app, vcapp, lib, vclib, subdirs 등이 올수 있다.

TEMPLATE = app : 독입적인 어플리케이션 (default값이다. 생략하면 app가 기본)

TEMPLATE = lib : static lib 또는 shared lib

TEMPLATE = subdirs : 내용은 없고 하위 디렉토리를 정의한다는 의미이다.

HEADERS 

해터파일을 적는다.

ex) HEADERS += animateditem.h

 

SOURCES

소스파일이다.

SOURCES += ledmeter.cpp main.cpp toplevel.cpp view.cpp

 

TARGET

실행파일의 이름이다. 보통 gcc 컴파일 시 –o 옵션 뒤에 붙는 이름이다.

생략 시 .pro 파일 앞에 붙는 이름이 default 값이 된다.

 

DEFINES

Define . gcc 컴파일 시 –D  옵션뒤에 붙는 옵션이다.

ex) DEFINES += HAVE_KEYBOARD

 

LIBS

프로젝트에 링크할 라이브러리를 지정한다.

라이브러리는 절래경로를 사용해 지정하거나 –L 옵션과 –l 과 같이 사용된다.

ex) LIBS += -lpng -L../../lib

 

INCLUDEPATH

전역 헤더 파일의 위치를 찾기위한 경로 지정. –I 옵션과 같은 역할

ex) INCLUDEPATH += ../shared

 

DESTDIR

실행 이미지가 설치될 디렉토리를 지정한다. 기본값은 플랫폼에 따라 다른데, 리눅스의 경우 현재 디렉토리에 실행파일이 생성되고, 윈도우에서는 debug나 release 디렉토리 아래 생성된다.

ex) DESTDIR = ../../../../bin

 

DEPENDPATH

QMAKE가 dependency 검색 시 사용되는 경로를 지정한다.

ex) DEPENDPATH = ../../include


MOC_DIR

moc 파일들이 생성되는 경로를 지정한다.

ex) MOC_DIR=$$OUT_PWD/.moc

 

SUBDIRS

하위 디렉토리에 있는 .pro 파일을 재귀적으로 호출될 수 있도록 하위 디렉토리를 지정한다.

ex) SUBDIRS += qtestlib designer

 

FORMS

uic에 의해 처리되는 QT디자이너로 생성된 .ui파일을 지정한다.

ex) FORMS += mainwindow.ui

 

RESOURCES

rcc에 의해 처리되는 실행파일내에 포함되는 리소스파일을 정의한 xml파일 .qrc를 지정한다.

ex) RESOURCES += assistant.qrc

 

VERSION

target 라이브러리의 버전 번호를 지정한다.

ex) VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}

 

DLLDESTDIR

dll파일이 설치될 경로를 지정한다. (디폴트값은 DESTDIR)

ex) DLLDESTDIR = $$OUTPUT_DIR/bin

 

QT

프로젝트에 사용될 Qt의 모듈을 지정한다.

디폴트값은 core 와 gui이다. 이는 QtCore 모듈과 QtGui 모듈을 포함한다는 의미이다.

QT에 지정되는 모듈은 대랴

core gui network opengl sql svg xml xmlpatterns qt3support 등이 있다.

Qt Creator에서 Qt모듈을 클릭하여 설정하는데 설정 시 .pro파일에 선택된 모듈들이 포함되는 것을 볼 수 있다.


CONFIG

CONFIG 변수는 빌드시 다양한 옵션들을 제어하기 위해 사용된다.

CONFIG += release warn_on qt 등의 형식으로 사용된다.

CONIFG와 사용되는 변수들

debug

 compile with debug options enabled

 release

 compile with optimization enabled, ignored if debug is specified

 warn_on

 The Compiler should emit more warnings than normally

 warn_off

 The Compiler should emit no warnings or as few as possible

 ordered

 Order subdirectories so parallelized builds work

 qt

 The target is a Qt application/library and requires Qt header file/library

 opengl

 The target require the OpenGL(or Mesa)

 thread

 The target is a multi threaded application or library

 x11

 The target is an X11 application or library

windows 

 The target is Win32 window application

 console

 The target is a Win32 console application

 shared

 The target is a shared object/DLL

 static

 The target is a static library

 plugin

 The target is a plugin(requires TARGET=lib, and implies shared)

 exceptions

 Turn on compiler exception support

 rtti

 Turns on compiler RTTI support

stl 

 Turns on Qt STL support

 flat

 only for TEMPLATE=vcapp; puts all sources files into one group and all header files into another group, independedt of the directory structure



 qmake의 내장함수

조건문

기본 문법은 아래와 같다.

condition {

    then-case

} else {

    else-case

}

{ 문은 반드시 condition 옆에 있어야 하고 }는 하나의 라인이어야 한다.

즉,

condition

{

then-case } 등으로 인식되지 않는다.

 

이제 사용예를 보자

win {

   debug {

      SOURCE += debug.cpp

   } else {

      SOURCE += release.cpp

   }

}

 

위 문장은 다음과 같이 사용할 수 있다.

condition:then-case

사용예

debug:SOURCE+=debug.cpp

else:SOURCE+=release.cpp

 

이경우 !(이 아닐경우)를 사용할 수 있다.

!debug:SOURCE+=release.cpp

 

isEmpty(variablename)

변수가 비었는지를 검사한다.

사용예

isEmpty(VERSION) {

   VERSION=4.3.0

}

 

CONFIG(config)

조건분과 유사하다. mutual exclusion을 사용할 수 있다.

사용예

CONFIG(release) {

   then-case

}




Posted by 생짜
|