56 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| function(qt_translation)
 | |
|   find_package(Qt5 COMPONENTS LinguistTools REQUIRED)
 | |
| 
 | |
|   set(options)
 | |
|   set(oneValueArgs TARGET TS_DIR)
 | |
|   set(multiValueArgs LANGUAGES)
 | |
| 
 | |
|   cmake_parse_arguments(_QTTR "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
 | |
|   set(_target ${_QTTR_TARGET})
 | |
|   set(_ts_dir ${_QTTR_TS_DIR})
 | |
|   set(_languages ${_QTTR_LANGUAGES})
 | |
|   get_target_property(_sources ${_target} SOURCES)
 | |
|   get_target_property(_source_dir ${_target} SOURCE_DIR)
 | |
| 
 | |
|   set(L10N_QRC_BODY "")
 | |
|   make_directory(${_ts_dir})
 | |
| 
 | |
|   set(_sources_list "")
 | |
|   foreach(_s ${_sources})
 | |
|     list(APPEND _sources_list ${_source_dir}/${_s})
 | |
|   endforeach()
 | |
| 
 | |
|   foreach(_lang ${_languages})
 | |
|     set(_ts "${_target}_${_lang}.ts")
 | |
|     set(_qm "${_target}_${_lang}.qm")
 | |
|     list(APPEND _ts_list ${_ts_dir}/${_ts})
 | |
|     list(APPEND _l10n_targets "${_target}_l10n_${_lang}")
 | |
|     string(APPEND L10N_QRC_BODY "<file alias=\"${_qm}\">${CMAKE_BINARY_DIR}/${_qm}</file>\n")
 | |
| 
 | |
|     add_custom_target(${_target}_l10n_${_lang}
 | |
|                         COMMAND ${Qt5_LUPDATE_EXECUTABLE} ${_sources_list} -ts ${_ts_dir}/${_ts} -target-language ${_lang}
 | |
|                         DEPENDS ${_sources_list})
 | |
| 
 | |
|     if(NOT EXISTS "${_ts_dir}/${_ts}")
 | |
|       add_custom_target(${_ts} DEPENDS ${_target}_l10n_${_lang})
 | |
|     else()
 | |
|       add_custom_target(${_ts} COMMAND echo "Skipping lupdate for ${_ts}")
 | |
|     endif()
 | |
| 
 | |
|     add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${_qm}
 | |
|                        COMMAND ${Qt5_LRELEASE_EXECUTABLE}
 | |
|                        ARGS ${_ts_dir}/${_ts} -qm ${CMAKE_BINARY_DIR}/${_qm}
 | |
|                        DEPENDS ${_ts} ${_sources_list})
 | |
|   endforeach()
 | |
| 
 | |
|   configure_file(${CMLIB_MODULE_DIR}/qrc/l10n.qrc.in
 | |
|                  ${CMAKE_BINARY_DIR}/${_target}_l10n.qrc)
 | |
|   qt5_add_resources(_qrc ${CMAKE_BINARY_DIR}/${_target}_l10n.qrc)
 | |
|   add_custom_target(${_target}_qrc DEPENDS ${_qrc})
 | |
|   add_custom_target(${_target}_l10n DEPENDS ${_l10n_targets})
 | |
| 
 | |
|   add_dependencies(${_target} ${_target}_qrc)
 | |
|   target_sources(${_target} PUBLIC ${_qrc})
 | |
| endfunction()
 | |
| 
 |