반응형

[Qt] qmake와 .pro 파일

반응형

qmake는 Makefile generator입니다. qt에서 프로젝트 파일은 확장자가 .pro 파일을 생성하는 데 qmake는 pro파일을 가지고 Makefile을 생성합니다. 윈도우즈 개발 플랫폼에서도 이와 같은 방법으로 프로젝트를 컴파일하는 데 리눅스에서 쓰는 방식 비슷하게 한다는 것이 참으로 인상적입니다.


.pro 파일의 예시는 다음과 같습니다.

TEMPLATE = app
INCLUDEPATH += .
 
# Input
HEADERS += ledmeter.h sprites.h toplevel.h view.h
SOURCES += ledmeter.cpp main.cpp toplevel.cpp view.cpp
#The following line was inserted by qt3to4
QT +=  qt3support
 
HEADERS += animateditem.h
SOURCES += animateditem.cpp
 
RESOURCES += portedasteroids.qrc
 
# install
target.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/portedasteroids
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS portedasteroids.pro bg.png sounds sprites
sources.path = $$[QT_INSTALL_EXAMPLES]/graphicsview/portedasteroids
INSTALLS += target sources

.pro 파일은 대부분 A= B 형식으로 이루어져 있습니다. A는 보통 시스템 변수라 하고 대문자로 정의합니다.

A=B의 의미는 대입이고, A += B는 추가, A -= B는 삭제입니다.


조심해야할 것은 = 을 두 번 연속으로 같은 변수에 대입할 경우 프로그래밍 언어처럼 마지막 대입된 값이 최종값이 된다는 것입니다.


여러줄을 사용하려면 리눅스에서 사용한 것과 같이 \를 대입합니다. 주석은 #을 사용합니다. 또한 변수 선언은 $${name}을 사용합니다.


그럼 시스템 변수에는 어떤 것들이 있는 지 살펴보겠습니다.

- SYSTEM - 

TEMPLATE : 프로젝트 파일의 타입을 정의합니다. app, vcapp, lib, vclib, subdirs 등이 올 수 있습니다.
app - 독립적인 어플리케이션입니다.(default)
lib - shared lib, static lib
subdirs : 하위 디렉토리를 정의합니다.
HEADERS : 헤더파일을 적습니다.
SOURCE : 소스파일을 적습니다.
TARGET : 실행파일의 이름입니다. 보통 gcc 컴파일 시 -o 옵션 뒤에 붙는 이름이죠. 생략 시, .pro 파일 앞에 붙는 이름이 default값이 됩니다.
DEFINES : 컴파일 시 -D 옵션 뒤에 붙는 옵션입니다.
LIBS : 프로젝트에 링크할 라이브러리를 지정합니다. 절대경로를 사용하거나 -L. -l 과 같이 사용됩니다.
INCLUDEPATH : 전역 헤더 파일의 위치를 찾기위한 경로 지정입니다. -I와 같습니다.
DESTDIR : 실행 이미지가 설치될 디렉토리를 지정합니다. (default값은 리눅스는 현재 디렉토리에 실행파일 생성, 윈도우는 release, debug폴더에 생성)
DEPENDPATH : qmake가 dependency 검색 시 사용되는 경로를 지정
MOC_DIR : 파일이 생성되는 경로 지정
SUBDIRS : 하위 디렉토리에 있는 .pro파일을 재귀적으로 호출될 수 있도록 하위 디렉토리 지정
FORMS : uic에 의해 처리되는 qt 디자이너로 생성된 .ui파일 지정
RESOURCES : rcc에 의해 처리되는 실행파일 내에 포함되는 리소스파일을 저의한 xml파일 .qrc를 지정
VERSION : target 라이브러리의 버전 번호 지정
DLLDESTDIR : dll파일이 설치될 경로 지정 (디폴트는 DESTDIR)
QT : 프로젝트에 사용될 Qt 모듈을 지정한다. 디폴트 값은 Core, Gui이며 이는 QtCore와 QtGui 모듈을 포함한다는 의미다. Qt에 지정되는 모듈은 Core, Gui, Network, OpenGL, SVG, XML, .. 등이 있다.
CONFIG : 다양한 옵션을 제어하기 위해 사용된다. 


반응형

이 글을 공유하기

댓글

Designed by JB FACTORY