프로젝트 파일 만들기

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

프로젝트 파일 요소

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

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

변수

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

qmake는 각 프로젝트 파일에서 특정 변수를 찾고, 이 변수의 내용을 사용하여 메이크파일에 무엇을 쓸지 결정합니다. 예를 들어, HEADERSSOURCES 변수의 값 목록은 프로젝트 파일과 동일한 디렉터리에 있는 헤더 및 소스 파일에 대해 qmake에 알려주는 데 사용됩니다.

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

다음 스니펫은 값 목록이 변수에 할당되는 방법을 보여줍니다:

HEADERS = mainwindow.h paintwidget.h

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

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

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

CONFIG 변수는 qmake가 메이크파일을 생성할 때 사용하는 또 다른 특수 변수입니다. 일반 구성에서 설명합니다. 위의 코드 조각에서 CONFIG 에 포함된 기존 값 목록에 console 이 추가되었습니다.

다음 표에는 자주 사용되는 몇 가지 변수가 나열되어 있고 그 내용이 설명되어 있습니다. 전체 변수 목록과 변수에 대한 설명은 변수를 참조하세요.

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

변수 이름 앞에 $$ 을 붙여 변수의 내용을 읽을 수 있습니다. 이는 한 변수의 내용을 다른 변수에 할당하는 데 사용할 수 있습니다:

TEMP_SOURCES = $$SOURCES

$$ 연산자는 문자열 및 값 목록에서 작동하는 내장 함수와 함께 광범위하게 사용됩니다. 자세한 내용은 qmake 언어를 참조하세요.

공백

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

DEST = "Program Files"

따옴표로 묶인 텍스트는 변수가 보유한 값 목록에서 단일 항목으로 취급됩니다. 공백이 포함된 경로를 처리하는 데에도 비슷한 접근 방식이 사용되며, 특히 Windows 플랫폼용 INCLUDEPATHLIBS 변수를 정의할 때 유용합니다:

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 문처럼 작동하는 범위를 통해 제공됩니다:

win32 {
    SOURCES += paintwidget_win.cpp
}

중괄호 안의 할당은 조건이 참인 경우에만 이루어집니다. 이 경우 win32 CONFIG 옵션을 설정해야 합니다. 이 작업은 Windows에서 자동으로 수행됩니다. 여는 중괄호는 조건과 같은 줄에 있어야 합니다.

일반적으로 루프가 필요한 변수에 대한 보다 복잡한 연산은 find(), unique(), count()와 같은 내장 함수를 통해 제공됩니다. 이러한 함수를 비롯하여 문자열과 경로를 조작하고, 사용자 입력을 지원하고, 외부 도구를 호출하기 위한 다양한 함수가 제공됩니다. 함수 사용에 대한 자세한 내용은 qmake 언어를 참조하세요. 모든 함수의 목록과 설명은 함수 바꾸기함수 테스트하기를 참조하세요.

프로젝트 템플릿

TEMPLATE 변수는 빌드할 프로젝트의 유형을 정의하는 데 사용됩니다. 프로젝트 파일에 이 변수가 선언되지 않은 경우, qmake는 응용 프로그램을 빌드해야 한다고 가정하고 목적에 맞는 적절한 메이크파일(또는 이와 동등한 파일)을 생성합니다.

다음 표에는 사용 가능한 프로젝트 유형이 요약되어 있으며 각 유형에 대해 qmake가 생성하는 파일이 설명되어 있습니다:

템플릿qmake 출력
앱(기본값)애플리케이션을 빌드하기 위한 메이크파일입니다.
lib라이브러리를 빌드할 메이크파일.
aux아무것도 빌드하지 않는 메이크파일. 예를 들어 프로젝트가 해석된 언어로 작성되어 타깃을 생성하기 위해 컴파일러를 호출할 필요가 없는 경우 이 템플릿을 사용합니다.

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

subdirsSUBDIRS 변수를 사용하여 지정된 하위 디렉터리에 대한 규칙을 포함하는 메이크파일입니다. 각 하위 디렉터리에는 고유한 프로젝트 파일이 포함되어야 합니다.
vcapp애플리케이션을 빌드하기 위한 Visual Studio 프로젝트 파일.
vclib라이브러리를 빌드하기 위한 Visual Studio 프로젝트 파일.
vcsubdirs하위 디렉터리에서 프로젝트를 빌드하기 위한 Visual Studio 솔루션 파일.

applib 템플릿을 사용하는 프로젝트의 프로젝트 파일 작성에 대한 조언은 일반적인 프로젝트 유형 빌드를 참조하세요.

subdirs 템플릿을 사용하면 qmake가 메이크파일을 생성하여 지정된 각 하위 디렉터리를 검사하고 거기서 찾은 프로젝트 파일을 처리한 다음 새로 생성된 메이크파일에서 플랫폼의 make 도구를 실행합니다. SUBDIRS 변수는 처리할 모든 하위 디렉터리 목록을 포함하는 데 사용됩니다.

일반 구성

CONFIG 변수는 프로젝트를 구성해야 하는 옵션과 기능을 지정합니다.

프로젝트는 릴리스 모드 또는 디버그 모드 또는 둘 다로 빌드할 수 있습니다. 디버그와 릴리스가 모두 지정되면 마지막 옵션이 적용됩니다. 프로젝트의 디버그 버전과 릴리스 버전을 모두 빌드하도록 debug_and_release 옵션을 지정하면 qmake가 생성하는 메이크파일에 두 버전을 모두 빌드하는 규칙이 포함됩니다. 이 규칙은 다음과 같은 방법으로 호출할 수 있습니다:

make all

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

참고: CONFIG 변수에 지정된 각 옵션을 범위 조건으로 사용할 수도 있습니다. 기본 제공 CONFIG() 함수를 사용하여 특정 구성 옵션이 있는지 테스트할 수 있습니다. 예를 들어 다음 줄은 이 함수를 범위의 조건으로 사용하여 opengl 옵션만 사용 중인지 테스트하는 것을 보여줍니다:

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

이렇게 하면 releasedebug 빌드에 대해 서로 다른 구성을 정의할 수 있습니다. 자세한 내용은 범위 사용하기를 참조하세요.

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

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

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

애플리케이션 및 라이브러리 프로젝트 템플릿은 빌드 프로세스를 미세 조정할 수 있는 보다 전문적인 구성 옵션을 제공합니다. 옵션은 공통 프로젝트 유형 빌드에 자세히 설명되어 있습니다.

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

CONFIG += qt debug

참고: "="가 아닌 "+="를 사용해야 하며, 그렇지 않으면 qmake가 Qt의 구성을 사용하여 프로젝트에 필요한 설정을 결정할 수 없습니다.

Qt 라이브러리 선언하기

CONFIG 변수에 qt 값이 포함되어 있으면, Qt 응용 프로그램에 대한 qmake의 지원이 활성화됩니다. 이를 통해 응용 프로그램에서 어떤 Qt 모듈을 사용할지 미세 조정할 수 있습니다. 이는 필요한 확장 모듈을 선언하는 데 사용할 수 있는 QT 변수를 통해 이루어집니다. 예를 들어 다음과 같은 방법으로 XML 및 네트워크 모듈을 활성화할 수 있습니다:

QT += network xml

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

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

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

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

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

구성 기능

qmake는 기능(.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

© 2025 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.