이 페이지에서

프로젝트 파일 생성

프로젝트 파일에는 애플리케이션, 라이브러리 또는 플러그인을 빌드하는 데 qmake에 필요한 모든 정보가 포함되어 있습니다. 일반적으로 일련의 선언을 사용하여 프로젝트 내의 리소스를 지정하지만, 간단한 프로그래밍 구문을 지원하므로 다양한 플랫폼과 환경에 맞는 서로 다른 빌드 프로세스를 정의할 수 있습니다.

프로젝트 파일 요소

qmake에서 사용하는 프로젝트 파일 형식은 단순한 빌드 시스템은 물론 상당히 복잡한 빌드 시스템까지 모두 지원할 수 있습니다. 간단한 프로젝트 파일은 직관적인 선언적 스타일을 사용하여, 프로젝트에서 사용되는 소스 파일과 헤더 파일을 나타내는 표준 변수를 정의합니다. 복잡한 프로젝트의 경우 제어 흐름 구조를 사용하여 빌드 프로세스를 세밀하게 조정할 수 있습니다.

다음 섹션에서는 프로젝트 파일에서 사용되는 다양한 유형의 요소에 대해 설명합니다.

변수

프로젝트 파일에서 변수는 문자열 목록을 저장하는 데 사용됩니다. 가장 단순한 프로젝트의 경우, 이러한 변수는 qmake에 사용할 구성 옵션을 알려주거나 빌드 과정에서 사용할 파일 이름과 경로를 제공합니다.

qmake는 각 프로젝트 파일에서 특정 변수를 찾아내고, 이 변수의 내용을 바탕으로 Makefile에 무엇을 기록해야 할지 결정합니다. 예를 들어, HEADERS 및 SOURCES 변수의 값 목록은 프로젝트 파일과 동일한 디렉터리에 있는 헤더 파일과 소스 파일을 qmake에 알리는 데 사용됩니다.

변수는 내부적으로 임시 값 목록을 저장하는 데에도 사용될 수 있으며, 기존 값 목록은 새로운 값으로 덮어쓰거나 확장할 수 있습니다.

다음 코드 조각은 변수에 값 목록이 어떻게 할당되는지 보여줍니다:

HEADERS = mainwindow.h paintwidget.h

변수의 값 목록은 다음과 같은 방식으로 확장됩니다:

SOURCES = main.cpp mainwindow.cpp \
          paintwidget.cpp
CONFIG += console

참고: 첫번째 할당에는 HEADERS 변수와 같은 줄에 지정된 값만 포함됩니다. 두 번째 할당에서는 백슬래시(\)를 사용하여 SOURCES 변수의 값을 여러 줄로 나눕니다.

CONFIG 변수는 qmake가 Makefile을 생성할 때 사용하는 또 다른 특수 변수입니다. 이에 대해서는 ‘일반 구성’에서 설명합니다. 위의 코드 조각에서 console 는 CONFIG 에 포함된 기존 값 목록에 추가됩니다.

다음 표에는 자주 사용되는 변수 몇 가지와 그 내용이 나열되어 있습니다. 변수의 전체 목록과 설명은 ‘변수’ 항목을 참조하십시오.

변수내용
CONFIG일반 프로젝트 구성 옵션.
DESTDIR실행 파일이나 바이너리 파일이 저장될 디렉터리입니다.
FORMSUser Interface Compiler(uic)에서 처리할 UI 파일 목록입니다.
HEADERS프로젝트 빌드 시 사용되는 헤더(.h) 파일의 파일명 목록입니다.
QT프로젝트에서 사용되는 Qt 모듈 목록입니다.
RESOURCES최종 프로젝트에 포함될 리소스(.qrc) 파일 목록입니다. 이 파일들에 대한 자세한 내용은 Qt 리소스 시스템을 참조하십시오.
SOURCES프로젝트를 빌드할 때 사용될 소스 코드 파일 목록입니다.
템플릿프로젝트에 사용할 템플릿입니다. 이 템플릿에 따라 빌드 과정의 결과물이 애플리케이션, 라이브러리, 또는 플러그인 중 어느 것이 될지가 결정됩니다.

변수 이름 앞에 ` $$`를 붙여 변수의 내용을 읽을 수 있습니다. 이를 통해 한 변수의 내용을 다른 변수에 할당할 수 있습니다:

TEMP_SOURCES = $$SOURCES

$$ 연산자는 문자열 및 값 목록을 다루는 내장 함수와 함께 광범위하게 사용됩니다. 자세한 내용은 qmake 언어를 참조하십시오.

공백

일반적으로 변수 할당 시 값들은 공백으로 구분됩니다. 공백이 포함된 값을 지정하려면 해당 값을 큰따옴표로 묶어야 합니다:

DEST = "Program Files"

따옴표로 묶인 텍스트는 변수가 보유한 값 목록에서 하나의 항목으로 처리됩니다. 공백이 포함된 경로를 처리할 때도 유사한 방식이 사용되며, 특히 Windows 플랫폼용 INCLUDEPATH 및 LIBS 변수를 정의할 때 그렇습니다:

win32:INCLUDEPATH += "C:/mylibs/extra headers"
unix:INCLUDEPATH += "/home/user/extra headers"

주석

프로젝트 파일에 주석을 추가할 수 있습니다. 주석은 # # 문자로 시작하여 같은 줄의 끝까지 이어집니다. 예를 들어:

# Comments usually start at the beginning of a line, but they
# can also follow other content on the same line.

변수 할당 시 # # 문자를 포함하려면 내장 변수 LITERAL_HASH의 내용을 사용해야 합니다.

내장 함수 및 제어 흐름

qmake는 변수의 내용을 처리할 수 있도록 여러 내장 함수를 제공합니다. 간단한 프로젝트 파일에서 가장 흔히 사용되는 함수는 파일 이름을 인수로 받는 include() 함수입니다. 지정된 파일의 내용은 include 함수가 사용된 위치에 프로젝트 파일에 포함됩니다. include 함수는 다른 프로젝트 파일을 포함하는 데 가장 일반적으로 사용됩니다:

include(other.pro)

조건부 구조에 대한 지원은 프로그래밍 언어의 ` if ` 문과 유사하게 작동하는 범위(scope)를 통해 제공됩니다:

win32 {
    SOURCES += paintwidget_win.cpp
}

중괄호 안의 할당은 조건이 참일 때만 수행됩니다. 이 경우 win32 CONFIG 옵션을 설정해야 합니다. Windows에서는 이 설정이 자동으로 적용됩니다. 여는 중괄호는 조건문과 같은 줄에 위치해야 합니다.

일반적으로 루프가 필요한 변수에 대한 더 복잡한 연산은 find(), unique(), count()와 같은 내장 함수를 통해 제공됩니다. 이러한 함수들과 그 밖의 많은 함수들은 문자열 및 경로를 조작하고, 사용자 입력을 지원하며, 외부 도구를 호출하는 데 사용됩니다. 함수 사용에 대한 자세한 내용은 qmake 언어를 참조하십시오. 모든 함수 목록과 설명은 함수 대체 및 테스트 함수를 참조하십시오.

프로젝트 템플릿

TEMPLATE 변수는 빌드할 프로젝트의 유형을 정의하는 데 사용됩니다. 프로젝트 파일에서 이 변수가 선언되지 않은 경우, qmake는 애플리케이션을 빌드해야 한다고 가정하고 해당 목적에 맞는 적절한 Makefile(또는 이에 상응하는 파일)을 생성합니다.

다음 표는 사용 가능한 프로젝트 유형을 요약하고, 각 유형에 대해 qmake가 생성할 파일을 설명합니다:

템플릿qmake 출력
app (기본값)애플리케이션을 빌드하기 위한 Makefile.
lib라이브러리를 빌드하기 위한 Makefile.
aux아무것도 빌드하지 않는 Makefile. 예를 들어 프로젝트가 인터프리터 기반 언어로 작성되어 타깃을 생성할 때 컴파일러를 호출할 필요가 없는 경우 이 유형을 사용하십시오.

참고: 이 템플릿 유형은 Makefile 기반 생성기에서만 사용할 수 있습니다. 특히, vcxproj 및 Xcode 생성기에서는 작동하지 않습니다.

subdirsSUBDIRS 변수를 사용하여 지정된 하위 디렉터리에 대한 규칙을 포함하는 Makefile입니다. 각 하위 디렉터리에는 자체 프로젝트 파일이 포함되어 있어야 합니다.
vcapp응용 프로그램을 빌드하기 위한 Visual Studio 프로젝트 파일입니다.
vclib라이브러리를 빌드하기 위한 Visual Studio 프로젝트 파일입니다.
vcsubdirs하위 디렉터리 내의 프로젝트를 빌드하기 위한 Visual Studio 솔루션 파일입니다.

app 및 lib 템플릿을 사용하는 프로젝트의 프로젝트 파일 작성에 대한 조언은 일반적인 프로젝트 유형 빌드하기를 참조하십시오.

subdirs 템플릿을 사용하는 경우, qmake는 지정된 각 하위 디렉터리를 검사하고, 그곳에서 발견된 프로젝트 파일을 처리하며, 새로 생성된 Makefile에 대해 플랫폼의 make 도구를 실행하는 Makefile을 생성합니다. SUBDIRS 변수는 처리할 모든 하위 디렉터리의 목록을 포함하는 데 사용됩니다.

일반 구성

CONFIG 변수는 프로젝트 구성에 사용될 옵션과 기능을 지정합니다.

프로젝트는 릴리스 모드나 디버그 모드, 또는 두 모드 모두로 빌드할 수 있습니다. 디버그와 릴리스가 모두 지정된 경우, 마지막에 지정된 모드가 적용됩니다. debug_and_release 옵션을 지정하여 프로젝트의 디버그 버전과 릴리스 버전을 모두 빌드하면, qmake가 생성하는 Makefile에는 두 버전을 모두 빌드하는 규칙이 포함됩니다. 이 규칙은 다음과 같은 방식으로 호출할 수 있습니다:

make all

CONFIG 변수에 build_all 옵션을 추가하면, 프로젝트를 빌드할 때 이 규칙이 기본값으로 적용됩니다.

참고: CONFIG 변수에 지정된각 옵션은 범위 조건으로도 사용할 수 있습니다. 내장된 CONFIG() 함수를 사용하여 특정 구성 옵션의 유무를 확인할 수 있습니다. 예를 들어, 다음 코드 줄은 opengl 옵션만 사용 중인지 확인하기 위해 범위 조건으로 이 함수를 사용하는 예시입니다:

CONFIG(opengl) {
    message(Building with OpenGL support.)
} else {
    message(OpenGL support is not available.)
}

이를 통해 release 및 debug 빌드에 대해 서로 다른 구성을 정의할 수 있습니다. 자세한 내용은 ‘범위 사용’을 참조하십시오.

다음 옵션들은 빌드할 프로젝트의 유형을 정의합니다.

참고: 이 중일부 옵션은 해당 플랫폼에서 사용될 때만 적용됩니다.

옵션설명
qt이 프로젝트는 Qt 애플리케이션이며 Qt 라이브러리에 링크되어야 합니다. ` QT ` 변수를 사용하여 애플리케이션에 필요한 추가 Qt 모듈을 제어할 수 있습니다. 이 값은 기본적으로 추가되지만, Qt가 아닌 프로젝트에 qmake를 사용하려면 이 값을 제거할 수 있습니다.
x11이 프로젝트는 X11 애플리케이션 또는 라이브러리입니다. 타깃이 Qt를 사용하는 경우 이 값은 필요하지 않습니다.

애플리케이션 및 라이브러리 프로젝트 템플릿은 빌드 프로세스를 세부적으로 조정할 수 있는 보다 전문적인 구성 옵션을 제공합니다. 해당 옵션에 대한 자세한 설명은 ‘일반적인 프로젝트 유형 빌드’에서 확인할 수 있습니다.

예를 들어, 애플리케이션이 Qt 라이브러리를 사용하고 ‘ debug ’ 모드로 빌드하려는 경우, 프로젝트 파일에는 다음 줄이 포함됩니다.

CONFIG += qt debug

참고: “=” 대신 “+=”를 사용해야합니다 . 그렇지 않으면 qmake가 Qt의 구성을 사용하여 프로젝트에 필요한 설정을 파악할 수 없습니다.

Qt 라이브러리 선언

CONFIG 변수에 qt 값이 포함되어 있으면, qmake의 Qt 애플리케이션 지원 기능이 활성화됩니다. 이를 통해 애플리케이션에서 사용할 Qt 모듈을 세부적으로 조정할 수 있습니다. 이는 필요한 확장 모듈을 선언하는 데 사용할 수 있는 QT 변수를 통해 이루어집니다. 예를 들어, 다음과 같은 방식으로 XML 및 네트워크 모듈을 활성화할 수 있습니다.

QT += network xml

참고: QT 에는 기본적으로 core 및 gui 모듈이 포함되어 있으므로, 위의 선언은 이 기본 목록에 네트워크 및 XML 모듈을 추가하는 것입니다. 다음 할당문은 기본 모듈을 생략하므로, 애플리케이션 소스 코드를 컴파일할 때 오류가 발생합니다:

QT = network xml # This will omit the core and gui modules.

gui 모듈을 포함하지 않고 프로젝트를 빌드하려면 “-=” 연산자를 사용하여 해당 모듈을 제외해야 합니다. 기본적으로 QT 에는 core 와 gui 가 모두 포함되어 있으므로, 다음 줄을 사용하면 최소한의 Qt 프로젝트가 빌드됩니다:

QT -= gui # Only the core module is used.

QT 변수에 추가할 수 있는 Qt 모듈 목록은 QT를 참조하십시오.

구성 기능

qmake는 feature(.prf) 파일에 지정된 추가 구성 기능을 통해 설정할 수 있습니다. 이러한 추가 기능은 종종 빌드 과정에서 사용되는 사용자 정의 도구에 대한 지원을 제공합니다. 빌드 과정에 기능을 추가하려면 CONFIG 변수에 기능 이름(기능 파일 이름의 어근)을 추가하십시오.

예를 들어, qmake는 다음 줄을 사용하여 D-Bus 및 ogg 라이브러리와 같이 pkg-config에서 지원하는 외부 라이브러리를 활용하도록 빌드 프로세스를 구성할 수 있습니다.

CONFIG += link_pkgconfig
PKGCONFIG += ogg dbus-1

기능 추가에 대한 자세한 내용은 ‘새 구성 기능 추가’를 참조하십시오.

다른 라이브러리 선언

프로젝트에서 Qt와 함께 제공되는 라이브러리 외에도 다른 라이브러리를 사용하는 경우, 프로젝트 파일에 해당 라이브러리를 명시해야 합니다.

qmake가 라이브러리를 검색하는 경로와 링크할 특정 라이브러리는 LIBS 변수의 값 목록에 추가할 수 있습니다. 라이브러리의 경로를 지정하거나, 라이브러리와 경로를 지정하기 위해 유닉스 스타일의 표기법을 사용할 수 있습니다.

예를 들어, 다음 줄은 라이브러리를 지정하는 방법을 보여줍니다:

LIBS += -L/usr/local/lib -lmath

헤더 파일이 있는 경로도 INCLUDEPATH 변수를 사용하여 비슷한 방식으로 지정할 수 있습니다.

예를 들어, 헤더 파일을 검색할 여러 경로를 추가하려면 다음과 같이 합니다:

INCLUDEPATH = c:/msdev/include d:/stl/include

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.