qmake 시작하기

이 튜토리얼은 qmake의 기본을 알려줍니다. 이 설명서의 다른 항목에는 qmake 사용에 대한 자세한 정보가 포함되어 있습니다.

간단하게 시작하기

애플리케이션의 기본 구현을 방금 완료하고 다음 파일을 만들었다고 가정해 보겠습니다:

  • hello.cpp
  • hello.h
  • main.cpp

이 파일들은 Qt 배포판의 examples/qmake/tutorial 디렉터리에서 찾을 수 있습니다. 애플리케이션의 설정에 대해 알고 있는 유일한 다른 사항은 애플리케이션이 Qt로 작성되었다는 것입니다. 먼저, 선호하는 일반 텍스트 편집기를 사용하여 examples/qmake/tutorialhello.pro 이라는 파일을 만듭니다. 가장 먼저 해야 할 일은 개발 프로젝트의 일부인 소스 및 헤더 파일에 대해 qmake에 알려주는 줄을 추가하는 것입니다.

먼저 프로젝트 파일에 소스 파일을 추가하겠습니다. 이렇게 하려면 SOURCES 변수를 사용해야 합니다. SOURCES += 로 새 줄을 시작하고 그 뒤에 hello.cpp를 넣으면 됩니다. 다음과 같은 내용이 생깁니다:

SOURCES += hello.cpp

프로젝트의 각 소스 파일에 대해 이 작업을 반복하여 다음과 같은 결과가 나올 때까지 반복합니다:

SOURCES += hello.cpp
SOURCES += main.cpp

Make와 유사한 구문을 사용하여 모든 파일을 한 번에 나열하고 싶다면 다음과 같이 개행 이스케이프를 사용하면 됩니다:

SOURCES = hello.cpp \
          main.cpp

이제 프로젝트 파일에 소스 파일이 나열되었으므로 헤더 파일을 추가해야 합니다. 헤더 파일은 소스 파일과 똑같은 방식으로 추가되지만 변수 이름이 HEADERS라는 점이 다릅니다.

이 작업이 완료되면 프로젝트 파일은 다음과 같은 모양이 됩니다:

HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp

대상 이름은 자동으로 설정됩니다. 프로젝트 파일 이름과 동일하지만 플랫폼에 적합한 접미사가 추가됩니다. 예를 들어 프로젝트 파일 이름이 hello.pro 인 경우 대상은 Windows에서는 hello.exe, Unix에서는 hello 이 됩니다. 다른 이름을 사용하려면 프로젝트 파일에서 설정하면 됩니다:

TARGET = helloworld

완성된 프로젝트 파일은 다음과 같아야 합니다:

HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp

이제 qmake를 사용하여 애플리케이션의 메이크파일을 생성할 수 있습니다. 명령줄의 프로젝트 디렉토리에 다음을 입력합니다:

qmake -o Makefile hello.pro

참고: 패키지 관리자를 통해 Qt를 설치한 경우, 바이너리는 qmake6 일 수 있습니다.

그런 다음 사용하는 컴파일러에 따라 make 또는 nmake 을 입력합니다.

Visual Studio 사용자의 경우, qmake는 Visual Studio 프로젝트 파일도 생성할 수 있습니다. 예를 들어

qmake -tp vc hello.pro

애플리케이션을 디버깅 가능하게 만들기

애플리케이션의 릴리스 버전에는 디버깅 심볼이나 기타 디버깅 정보가 포함되어 있지 않습니다. 개발 중에는 관련 정보가 있는 애플리케이션의 디버깅 버전을 만드는 것이 유용합니다. 이는 프로젝트 파일의 CONFIG 변수에 debug 을 추가하면 쉽게 달성할 수 있습니다.

예를 들어

CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp

이전과 같이 qmake를 사용하여 메이크파일을 생성합니다. 이제 디버깅 환경에서 애플리케이션을 실행할 때 애플리케이션에 대한 유용한 정보를 얻을 수 있습니다.

플랫폼별 소스 파일 추가하기

몇 시간 동안 코딩한 후 애플리케이션의 플랫폼별 부분을 시작하고 플랫폼 종속 코드를 분리하기로 결정했을 수 있습니다. 이제 프로젝트 파일에 포함할 두 개의 새 파일 hellowin.cpphellounix.cpp 이 생겼습니다. 이 파일을 SOURCES 변수에 추가하면 두 파일이 모두 메이크파일에 위치하게 되므로 그냥 추가할 수 없습니다. 따라서 여기서 해야 할 일은 빌드하는 플랫폼에 따라 처리할 스코프를 사용하는 것입니다.

Windows용 플랫폼 종속 파일을 추가하는 간단한 범위는 다음과 같습니다:

win32 {
    SOURCES += hellowin.cpp
}

Windows용으로 빌드할 때 qmake는 소스 파일 목록에 hellowin.cpp 을 추가합니다. 다른 플랫폼용으로 빌드할 때는 qmake가 이를 무시합니다. 이제 남은 작업은 유닉스 전용 파일에 대한 스코프를 생성하는 것입니다.

이 작업이 완료되면 프로젝트 파일은 다음과 같이 보일 것입니다:

CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
    SOURCES += hellowin.cpp
}
unix {
    SOURCES += hellounix.cpp
}

이전과 같이 qmake를 사용하여 메이크파일을 생성합니다.

파일이 없는 경우 qmake 중지하기

특정 파일이 존재하지 않는 경우 메이크파일을 생성하고 싶지 않을 수 있습니다. exists() 함수를 사용하여 파일이 존재하는지 확인할 수 있습니다. error() 함수를 사용하여 qmake의 처리를 중지할 수 있습니다. 이것은 범위와 같은 방식으로 작동합니다. 범위 조건을 함수로 바꾸기만 하면 됩니다. main.cpp라는 파일에 대한 검사는 다음과 같습니다:

!exists( main.cpp ) {
    error( "No main.cpp file found" )
}

! 기호는 테스트를 무효화하는 데 사용됩니다. 즉, 파일이 존재하면 exists( main.cpp ) 가 참이고 파일이 존재하지 않으면 !exists( main.cpp ) 가 참입니다.

CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
    SOURCES += hellowin.cpp
}
unix {
    SOURCES += hellounix.cpp
}
!exists( main.cpp ) {
    error( "No main.cpp file found" )
}

이전과 같이 qmake를 사용하여 메이크파일을 생성합니다. main.cpp 의 이름을 일시적으로 변경하면 메시지가 표시되고 qmake가 처리를 중지합니다.

둘 이상의 조건 확인

Windows를 사용하는 경우 명령줄에서 애플리케이션을 실행할 때 qDebug() 으로 출력되는 문을 보고 싶다고 가정해 보겠습니다. 출력을 보려면 적절한 콘솔 설정으로 애플리케이션을 빌드해야 합니다. CONFIG 줄에 console 을 추가하여 Windows의 메이크파일에 이 설정을 쉽게 포함시킬 수 있습니다. 하지만 Windows에서 실행 중이고 CONFIG 줄에 debug 이 이미 있는 경우에만 CONFIG 줄을 추가하고 싶다고 가정해 보겠습니다. 이를 위해서는 두 개의 중첩된 스코프를 사용해야 합니다. 먼저 하나의 스코프를 만든 다음 그 안에 다른 스코프를 만듭니다. 처리할 설정을 두 번째 범위 안에 다음과 같이 넣습니다:

win32 {
    debug {
        CONFIG += console
    }
}

중첩된 범위는 콜론을 사용하여 서로 결합할 수 있으므로 최종 프로젝트 파일은 다음과 같습니다:

CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
    SOURCES += hellowin.cpp
}
unix {
    SOURCES += hellounix.cpp
}
!exists( main.cpp ) {
    error( "No main.cpp file found" )
}
win32:debug {
    CONFIG += console
}

끝났습니다! 이제 qmake 튜토리얼을 완료했으며 개발 프로젝트를 위한 프로젝트 파일을 작성할 준비가 되었습니다.

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