CMake qt5_add_translation,如何指定输出路径?

时间:2017-06-27 14:29:35

标签: cmake qt-linguist

我使用qt5_add_translation运行lrelease并生成 .qm文件。默认情况下, .qm文件放在构建目录的根级别,无论您将 .ts文件放在源目录中。

如何在构建中为这些文件指定子目录?

2 个答案:

答案 0 :(得分:1)

在调用Qt宏之前,在 .ts文件上设置一个属性:

set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION your_output_path)

其中TS_FILES包含 .ts文件的列表,而your_output_path是放置 .qm文件的路径(相对于构建目录或绝对)。

因为宏将检索属性以生成 .qm文件的路径(使用 Qt 5.9 进行测试):

get_source_file_property(output_location ${_abs_FILE} OUTPUT_LOCATION)
if(output_location)
    file(MAKE_DIRECTORY "${output_location}")
    set(qm "${output_location}/${qm}.qm")
else()
    set(qm "${CMAKE_CURRENT_BINARY_DIR}/${qm}.qm")
endif()

答案 1 :(得分:1)

使用lrelease和lupdate实用程序的手动调用

set(TS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/translations")

set(TS_FILES
    "${TS_DIR}/${PROJECT_NAME}_ru_RU.ts"
)

find_program(LUPDATE_EXECUTABLE lupdate)
find_program(LRELEASE_EXECUTABLE lrelease)

foreach(_ts_file ${TS_FILES})

    execute_process(
        COMMAND ${LUPDATE_EXECUTABLE} -recursive ${CMAKE_SOURCE_DIR} -ts ${_ts_file})
    execute_process(
        COMMAND ${LRELEASE_EXECUTABLE} ${_ts_file})

endforeach()