QT_ADD_LREASE

Qt Linguist.ts 파일을 .qm 파일로 변환하는 대상을 추가합니다.

이 명령은 Qt6 패키지의 LinguistTools 구성 요소에 정의되어 있습니다. 패키지를 로드합니다:

find_package(Qt6 REQUIRED COMPONENTS LinguistTools)

이 명령은 Qt 6.2에 도입되었습니다.

개요

6.7부터

qt_add_lrelease(TS_FILES file1.ts [file2.ts ...]
                [LRELEASE_TARGET target-name]
                [EXCLUDE_FROM_ALL]
                [NO_GLOBAL_TARGET]
                [QM_OUTPUT_DIRECTORY directory]             # since 6.9
                [QM_FILES_OUTPUT_VARIABLE variable-name]
                [MERGE_QT_TRANSLATIONS]
                [QT_TRANSLATION_CATALOGS catalog1 [catalog2 ...]]
                [OPTIONS ...])

6.2부터(더 이상 사용되지 않음):

qt_add_lrelease(target TS_FILES file1.ts [file2.ts ...]
                [NO_TARGET_DEPENDENCY]
                [NO_GLOBAL_TARGET]
                [QM_FILES_OUTPUT_VARIABLE variable-name]
                [OPTIONS ...])

버전 없는 명령이 비활성화되어 있으면 qt6_add_lrelease() 대신 사용하세요. 이 명령과 동일한 인수 집합을 지원합니다.

경고: 대상 디렉터리 범위와 다른 디렉터리 범위에서 qt_add_lrelease 를 호출하려면 CMake 버전 3.18 이상이 필요합니다.

설명

.ts 파일을 lrelease를 사용하여 .qm 파일로 변환하는 사용자 정의 명령을 만듭니다.

사용자 정의 명령의 실행은 기본적으로 빌드된 사용자 정의 대상에 의해 구동됩니다. 이 사용자 지정 대상의 이름은 기본적으로 ${PROJECT_NAME}_lrelease 입니다. qt_add_lrelease 을 추가로 호출하면 숫자가 추가된 대상 이름이 만들어집니다. 사용자 지정 대상 이름은 LRELEASE_TARGET 옵션으로 지정할 수 있습니다.

.ts 파일은 TS_FILES 인수를 사용하여 지정해야 합니다.

이 함수는 qt_add_lupdate와 함께 사용하도록 설계되었습니다. 편의 래퍼인 qt_add_translations도 참조하십시오.

옵션

lrelease 을 호출할 때 전달할 OPTIONS 을 추가로 설정할 수 있습니다. 가능한 옵션은 lrelease 문서에서 확인할 수 있습니다.

생성된 .qm 파일의 위치

기본적으로 .qm 파일은 현재 빌드 디렉토리(CMAKE_CURRENT_BINARY_DIR)에 위치합니다. Qt 6.9부터는 QM_OUTPUT_DIRECTORY 인수를 사용하여 .qm 파일을 다른 디렉터리에 생성할 수 있습니다. 상대 경로는 CMAKE_CURRENT_BINARY_DIR 아래로 간주됩니다.

예를 들어 다음 코드를 사용하면 .qm 파일이 현재 빌드 디렉터리 아래의 translations 디렉터리에 생성됩니다.

qt_add_lrelease(
    TS_FILES myapp_en.ts myapp_de.ts
    QM_OUTPUT_DIRECTORY translations
)

보다 세밀하게 제어하려면 해당 .ts 파일에 소스 파일 속성 OUTPUT_LOCATION 을 설정하여 개별 .qm 파일의 출력 디렉터리를 지정할 수 있습니다. 이 작업은 qt_add_lrelease 을 호출하기 전에 수행해야 합니다.

OUTPUT_LOCATION 소스 파일 속성은 QM_OUTPUT_DIRECTORY 을 통해 전달된 디렉터리를 재정의합니다.

예를 들어 다음 코드를 사용하면 .qm 파일이 현재 빌드 디렉터리 아래의 translations 디렉터리에 생성됩니다.

set_source_files_properties(app_en.ts app_de.ts
    PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/translations")
qt_add_lrelease(TS_FILES myapp_en.ts myapp_de.ts)

생성된 .qm 파일 처리

예를 들어 설치 규칙을 생성하는 등 생성된 .qm 파일을 추가로 처리하려면 qt_add_lrelease 변수에 .qm 파일의 경로를 저장할 수 있습니다. 이를 위해 QM_FILES_OUTPUT_VARIABLE <variable-name> 을 함수에 전달하세요.

기본적으로 빌드

기본적으로 이 명령은 기본 빌드 대상에 추가되는 사용자 정의 대상을 만듭니다. 이렇게 하면 프로젝트가 빌드될 때 .qm 파일이 항상 최신 상태로 유지됩니다. EXCLUDE_FROM_ALL 인수를 사용하여 이 동작을 해제할 수 있습니다. 이 경우 사용자가 ${PROJECT_NAME}_lrelease 대상을 수동으로 빌드해야 합니다.

엄브렐러 대상

${target}_lrelease 대상 외에 엄브렐러 대상 release_translations 이 생성됩니다. 이 타깃은 qt_add_lrelease 으로 생성된 모든 ${target}_lrelease 타깃을 빌드합니다.

이 동작을 방지하려면 NO_GLOBAL_TARGETqt_add_lrelease 으로 전달하세요.

이 타겟의 이름은 qt_add_lrelease 을 호출하기 전에 QT_GLOBAL_LRELEASE_TARGET 변수를 설정하여 재정의할 수 있습니다.

Qt 제공 번역 병합하기

Qt 6.9부터는 Qt에서 제공하는 번역을 응용 프로그램 전용 .qm 파일로 병합할 수 있습니다. 이를 위해서는 qt_add_translationsMERGE_QT_TRANSLATIONS 옵션을 전달합니다. 그러면 프로젝트에서 사용하는 모듈에 속하는 Qt 번역 카탈로그가 결정되고 lrelease 에서 생성된 .qm 파일에 병합됩니다.

Qt 번역 카탈로그는 qt_add_translations 이 호출되는 CMakeLists.txt 의 범위에서 find_package 호출에 의해 결정됩니다. 예를 들어, 다음 순서는 qtbaseqtmultimedia 카탈로그를 .qm 파일에 병합합니다:

find_package(Qt6 COMPONENTS MultimediaWidgets)
...
qt_add_lrelease(
    TS_FILES myapp_de.ts myapp_fi.ts
    MERGE_QT_TRANSLATIONS
)

카탈로그를 명시적으로 지정하려면 QT_TRANSLATION_CATALOGS 인수를 사용합니다:

qt_add_lrelease(
    TS_FILES myapp_de.ts myapp_fi.ts
    MERGE_QT_TRANSLATIONS
    QT_TRANSLATION_CATALOGS qtbase qtmultimedia
)

프로젝트가 Qt에서 자체 번역을 제공하지 않는 언어를 지원하는 경우 구성 시 경고가 표시됩니다. CMake 변수 QT_NO_MISSING_CATALOG_LANGUAGE_WARNINGON 로 설정하여 이 경고를 억제할 수 있습니다.

사용되지 않는 명령 서명

이전 버전의 qt_add_lrelease 은 첫 번째 인수로 대상을 사용했습니다. 여전히 가능하지만 더 이상 사용되지 않습니다.

예제

주어진 .ts 파일을 .qm 파일로 변환하기 위해 myapp_lreleaserelease_translations 대상을 추가합니다. 또한 생성된 .qm 파일을 설치합니다. myapp_lrelease 타깃은 기본적으로 빌드됩니다.

project(myapp)
...
qt_add_lrelease(
    TS_FILES myapp_de.ts myapp_fr.ts
    QM_FILES_OUTPUT_VARIABLE qm_files
)
install(FILES ${qm_files} DESTINATION "translations")

LRELEASE_TARGET 인수를 전달하여 생성된 대상의 이름을 지정할 수 있습니다:

qt_add_lrelease(
    LRELEASE_TARGET create_myapp_qm_files
    TS_FILES myapp_de.ts myapp_fr.ts
    QM_FILES_OUTPUT_VARIABLE qm_files
)

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