CMake qt5_add_translation,如何指定输出路径?
CMake qt5_add_translation, how to specify the output path?
我使用 qt5_add_translation
到 运行 lrelease 并生成 .qm 文件。默认情况下,.qm 文件 被放置在构建目录的根级别,无论您将 .ts 文件 放在源目录中的什么位置.
如何在构建中为这些文件指定子目录?
在调用 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()
使用手动调用 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()
我使用 qt5_add_translation
到 运行 lrelease 并生成 .qm 文件。默认情况下,.qm 文件 被放置在构建目录的根级别,无论您将 .ts 文件 放在源目录中的什么位置.
如何在构建中为这些文件指定子目录?
在调用 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()
使用手动调用 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()