일반적인 프로젝트 유형 빌드하기
이 장에서는 Qt를 기반으로 하는 세 가지 일반적인 프로젝트 유형인 응용 프로그램, 라이브러리, 플러그인에 대한 qmake 프로젝트 파일을 설정하는 방법을 설명합니다. 모든 프로젝트 유형이 동일한 변수를 많이 사용하지만, 각 프로젝트는 프로젝트별 변수를 사용하여 출력 파일을 사용자 정의합니다.
플랫폼별 변수는 여기서는 설명하지 않습니다. 자세한 내용은 Windows용 Qt - 디플로이먼트 및 macOS용 Qt를 참조하십시오.
애플리케이션 빌드하기
app
템플릿은 응용 프로그램을 빌드할 메이크파일을 생성하도록 qmake에 지시합니다. 이 템플릿을 사용하면 CONFIG 변수 정의에 다음 옵션 중 하나를 추가하여 애플리케이션 유형을 지정할 수 있습니다:
옵션 | 설명 |
---|---|
windows | 애플리케이션이 Windows GUI 애플리케이션입니다. |
console | app 템플릿만 해당: 애플리케이션이 Windows 콘솔 애플리케이션입니다. |
테스트케이스 | 애플리케이션이 자동화된 테스트입니다. |
이 템플릿을 사용할 때 다음과 같은 qmake 시스템 변수가 인식됩니다. .pro 파일에서 이러한 변수를 사용하여 애플리케이션에 대한 정보를 지정해야 합니다. 추가 플랫폼 종속 시스템 변수는 플랫폼 노트에서 확인할 수 있습니다.
- HEADERS - 애플리케이션의 헤더 파일 목록입니다.
- SOURCES - 애플리케이션의 C++ 소스 파일 목록입니다.
- FORMS - 애플리케이션의 UI 파일 목록( Qt Widgets Designer 를 사용하여 생성).
- LEXSOURCES - 애플리케이션의 Lex 소스 파일 목록입니다.
- YACCSOURCES - 애플리케이션의 Yacc 소스 파일 목록입니다.
- TARGET - 애플리케이션의 실행 파일 이름입니다. 기본값은 프로젝트 파일의 이름입니다. (확장자가 있는 경우 자동으로 추가됩니다).
- DESTDIR - 대상 실행 파일이 위치한 디렉토리입니다.
- DEFINES - 애플리케이션에 필요한 추가 전처리기 정의 목록입니다.
- INCLUDEPATH - 애플리케이션에 필요한 추가 포함 경로 목록입니다.
- DEPENDPATH - 애플리케이션의 종속성 검색 경로입니다.
- VPATH - 제공된 파일을 찾기 위한 검색 경로입니다.
- DEF_FILE - Windows 전용입니다: 애플리케이션에 대해 링크할 .def 파일입니다.
값이 있는 시스템 변수만 사용하면 됩니다. 예를 들어, 추가 INCLUDEPATH가 없는 경우 지정할 필요가 없습니다. qmake가 필요한 기본값을 추가합니다. 예제 프로젝트 파일은 다음과 같습니다:
TEMPLATE = app DESTDIR = c:/helloapp HEADERS += hello.h SOURCES += hello.cpp SOURCES += main.cpp DEFINES += USE_MY_STUFF CONFIG += release
템플릿이나 대상 디렉터리와 같이 단일 값인 항목의 경우 "="를 사용하지만 다중 값인 항목의 경우 "+="를 사용하여 해당 유형의 기존 항목에 추가합니다. "="를 사용하면 변수 값이 새 값으로 바뀝니다. 예를 들어 DEFINES=USE_MY_STUFF
을 작성하면 다른 모든 정의가 삭제됩니다.
테스트케이스 빌드하기
테스트케이스 프로젝트는 자동화된 테스트로 실행하기 위한 app
프로젝트입니다. CONFIG
변수에 testcase
값을 추가하여 app
을 테스트 케이스로 표시할 수 있습니다.
테스트케이스 프로젝트의 경우 qmake는 생성된 메이크파일에 check
대상을 삽입합니다. 이 타깃은 애플리케이션을 실행합니다. 종료 코드가 0으로 종료되면 테스트가 통과한 것으로 간주됩니다.
check
타깃은 서브디어 프로젝트를 통해 자동으로 재귀됩니다. 즉, SUBDIRS 프로젝트 내에서 make check
명령을 실행하여 전체 테스트 스위트를 실행할 수 있습니다.
check
대상의 실행은 특정 메이크파일 변수에 의해 사용자 지정될 수 있습니다. 이러한 변수는 다음과 같습니다:
변수 | 설명 |
---|---|
TESTRUNNER | 각 테스트 명령에 추가되는 명령 또는 셸 조각입니다. 사용 사례의 예로 지정된 시간 내에 테스트가 완료되지 않으면 테스트를 종료하는 "시간 초과" 스크립트를 들 수 있습니다. |
TESTARGS | 각 테스트 명령에 추가되는 추가 인수입니다. 예를 들어, 테스트에서 출력 파일 및 형식을 설정하기 위해 추가 인수를 전달하는 것이 유용할 수 있습니다(예: QTestLib에서 지원하는 -o filename,format 옵션). |
참고: 변수는 .pro 파일이 아닌 make
도구를 호출하는 동안 설정해야 합니다. 대부분의 make
도구는 명령줄에서 직접 Makefile 변수를 설정할 수 있도록 지원합니다:
# Run tests through test-wrapper and use JUnit XML output format. # In this example, test-wrapper is a fictional wrapper script which terminates # a test if it does not complete within the amount of seconds set by "--timeout". # The "-o result.xml,junitxml" options are interpreted by QTestLib. make check TESTRUNNER="test-wrapper --timeout 120" TESTARGS="-o result.xml,junitxml"
테스트케이스 프로젝트는 다음 CONFIG
옵션을 사용하여 추가로 사용자 지정할 수 있습니다:
옵션 | 설명 |
---|---|
insignificant_test | 테스트의 종료 코드는 make check 동안 무시됩니다. |
테스트 케이스는 종종 QTest 또는 TestCase
으로 작성되지만 CONFIG+=testcase
및 make check
을 반드시 사용해야 하는 것은 아닙니다. 유일한 기본 요구 사항은 테스트 프로그램이 성공 시 종료 코드가 0이고 실패 시 종료 코드가 0이 아닌 종료 코드로 종료하는 것입니다.
라이브러리 빌드하기
lib
템플릿은 라이브러리를 빌드할 메이크파일을 생성하도록 qmake에 지시합니다. 이 템플릿을 사용하면 app
템플릿이 지원하는 시스템 변수 외에 버전 변수가 지원됩니다. .pro 파일에 있는 변수를 사용하여 라이브러리에 대한 정보를 지정합니다.
lib
템플릿을 사용하는 경우 CONFIG 변수에 다음 옵션을 추가하여 빌드되는 라이브러리 유형을 결정할 수 있습니다:
옵션 | 설명 |
---|---|
dll | 라이브러리가 공유 라이브러리(dll)입니다. |
staticlib | 라이브러리가 정적 라이브러리입니다. |
plugin | 라이브러리가 플러그인입니다. |
라이브러리에 대한 추가 정보를 제공하기 위해 다음 옵션을 정의할 수도 있습니다.
- 버전 - 대상 라이브러리의 버전 번호입니다. 예: 2.3.1.
라이브러리의 대상 파일 이름은 플랫폼에 따라 다릅니다. 예를 들어 X11, macOS 및 iOS에서는 라이브러리 이름 앞에 lib
접두사가 붙습니다. Windows에서는 파일 이름에 접두사가 추가되지 않습니다.
플러그인 빌드하기
플러그인은 이전 섹션에서 설명한 대로 lib
템플릿을 사용하여 빌드합니다. 이는 각 플랫폼에 적합한 형태로 플러그인을 빌드할 프로젝트의 메이크파일(보통 라이브러리 형태)을 생성하도록 qmake에 지시합니다. 일반 라이브러리와 마찬가지로 버전 변수는 플러그인에 대한 정보를 지정하는 데 사용됩니다.
- VERSION - 대상 라이브러리의 버전 번호입니다. 예: 2.3.1.
Qt Widgets Designer 플러그인 빌드하기
Qt Widgets Designer 플러그인은 시스템에 대한 Qt의 구성 방식에 따라 달라지는 특정 구성 설정 세트를 사용하여 빌드됩니다. 편의를 위해 이러한 설정은 Qt 변수에 designer
을 추가하여 활성화할 수 있습니다. 예를 들어:
QT += widgets designer
플러그인 기반 프로젝트의 더 많은 예는 Qt Widgets Designer 예제를 참조하세요.
디버그 및 릴리스 모드에서 빌드 및 설치하기
디버그 모드와 릴리스 모드 모두에서 프로젝트를 빌드해야 하는 경우가 있습니다. CONFIG 변수에는 debug
및 release
옵션이 모두 포함될 수 있지만 마지막에 지정한 옵션만 적용됩니다.
두 모드에서 빌드하기
프로젝트를 두 모드에서 빌드할 수 있도록 하려면 CONFIG
변수에 debug_and_release
옵션을 추가해야 합니다:
CONFIG += debug_and_release CONFIG(debug, debug|release) { TARGET = debug_binary } else { TARGET = release_binary }
위 코드 조각의 범위는 각 모드에서 빌드 대상을 수정하여 결과 대상의 이름이 서로 다른지 확인합니다. 타깃에 다른 이름을 제공하면 한 타깃이 다른 타깃을 덮어쓰지 않도록 할 수 있습니다.
qmake가 프로젝트 파일을 처리할 때 프로젝트가 두 모드 모두에서 빌드될 수 있도록 Makefile 규칙을 생성합니다. 이 규칙은 다음과 같은 방법으로 호출할 수 있습니다:
make all
프로젝트 파일의 CONFIG
변수에 build_all
옵션을 추가하여 프로젝트가 기본적으로 두 모드 모두에서 빌드되도록 할 수 있습니다:
CONFIG += build_all
이렇게 하면 메이크파일이 기본 규칙을 사용하여 처리될 수 있습니다:
make
두 모드 모두에서 설치
build_all
옵션을 사용하면 설치 규칙이 호출될 때 대상의 두 버전이 모두 설치되도록 할 수도 있습니다:
make install
대상 플랫폼에 따라 빌드 대상의 이름을 사용자 지정할 수 있습니다. 예를 들어 라이브러리 또는 플러그인의 이름을 Windows에서는 Unix 플랫폼에서 사용되는 것과 다른 규칙을 사용하여 지정할 수 있습니다:
CONFIG(debug, debug|release) { mac: TARGET = $$join(TARGET,,,_debug) win32: TARGET = $$join(TARGET,,d) }
위 코드 조각의 기본 동작은 디버그 모드에서 빌드할 때 빌드 대상에 사용되는 이름을 수정하는 것입니다. else
절을 범위에 추가하여 릴리스 모드에서도 동일한 작업을 수행할 수 있습니다. 그대로 두면 대상 이름은 수정되지 않은 상태로 유지됩니다.
© 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.