QML 애플리케이션 빌드하기

C++ 콘솔 애플리케이션 빌드에서 간단한 콘솔 애플리케이션을 위한 CMakeLists.txt 파일을 보여드렸습니다. 이제 이 파일을 사용하는 QML 애플리케이션을 만들어 보겠습니다. Qt Quick 모듈을 사용하는 QML 애플리케이션을 만들어 보겠습니다.

이것이 전체 프로젝트 파일입니다:

cmake_minimum_required(VERSION 3.16)

project(hello VERSION 1.0 LANGUAGES CXX)

find_package(Qt6 6.2 COMPONENTS Quick Gui REQUIRED)

qt_standard_project_setup(REQUIRES 6.5)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

qt_add_executable(myapp
    main.cpp
)

qt_add_qml_module(myapp
    URI hello
    QML_FILES
        main.qml
        FramedImage.qml
    RESOURCES
        img/world.png
)

target_link_libraries(myapp PRIVATE Qt6::Gui Qt6::Quick)

우리가 변경한 내용을 살펴보겠습니다. find_package 호출에서 CoreQuick 으로 바꿉니다. 이렇게 하면 Qt6Quick 모듈을 찾고 나중에 링크할 Qt6::Quick 타깃을 제공합니다.

find_package(Qt6 6.2 COMPONENTS Quick Gui REQUIRED)

qt_standard_project_setup 을 호출하고 CMAKE_CXX_STANDARDCMAKE_CXX_STANDARD_REQUIRED 를 지정합니다. REQUIRES 6.5qt_standard_project_setup 으로 전달하여 qt_add_qml_module에 대한 유용한 기본값을 선택합니다. 이는 버전 6.5까지의 모든 Qt CMake 정책, 특히 QML 모듈의 정상적인 기본 리소스 접두사를 정의하는 QTP0001을 활성화합니다.

qt_standard_project_setup(REQUIRES 6.5)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

Qt6::Quick 에 의존하기 때문에 응용 프로그램은 여전히 Qt6::Core 에 링크됩니다.

qt_add_executable은 애플리케이션 대상을 생성하고 마무리합니다:

qt_add_executable(myapp
    main.cpp
)

qt_add_qml_module은 실행 파일의 대상, URI, 모듈 버전, QML 파일 목록을 전달하여 myapp이 QML 모듈이 되도록 합니다. 이렇게 하면 QML 파일이 리소스 파일 시스템의 qrc:/qt/qml/${URI} 에 배치됩니다. 또한 qt_add_qml_moduleqmlcachegen 이 실행되도록 합니다. 또한 myapp_qmllint 타깃을 생성하여 QML_FILES의 파일에서 qmllint 을 실행합니다.

qt_add_qml_module(myapp
    URI hello
    QML_FILES
        main.qml
        FramedImage.qml
    RESOURCES
        img/world.png
)

참조된 리소스를 추가하면 리소스 파일 시스템에서도 QML 파일과 동일한 루트 경로에 있는 애플리케이션에 자동으로 추가됩니다. 리소스 시스템의 경로를 소스 및 빌드 디렉터리의 경로와 일관되게 유지하면 FramedImage.qml을 기준으로 이미지가 확인되므로 항상 이미지를 찾을 수 있습니다. 리소스 파일 시스템에서 main.qml을 로드하는 경우 리소스 파일 시스템의 이미지를 참조하고, qml 도구로 검토하는 경우 실제 파일 시스템의 이미지를 참조합니다.

target_link_libraries 명령에서는 Qt6::Core 대신 Qt6::Quick 에 대해 링크합니다.

target_link_libraries(myapp PRIVATE Qt6::Gui Qt6::Quick)

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