diff --git a/translations/CMakeLists.txt b/translations/CMakeLists.txt
index f2b48831e..f5a37ae8b 100644
--- a/translations/CMakeLists.txt
+++ b/translations/CMakeLists.txt
@@ -60,23 +60,28 @@ qt5_add_translation(translations_FILES
zh_TW.ts
)
-file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/translations.qrc.in"
-"
-
-
-")
-foreach(qm ${translations_FILES})
- get_filename_component(qm_name ${qm} NAME)
- file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/translations.qrc.in"
- " ${qm}\n")
-endforeach(qm)
-file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/translations.qrc.in"
-"
-
-")
+# Generate a resource file which contains all translation files
+function(generate_translation_resource)
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/translations.qrc.in"
+ "
+
+
+ ")
+ foreach(qm ${translations_FILES})
+ get_filename_component(qm_name ${qm} NAME)
+ file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/translations.qrc.in"
+ " ${qm}\n")
+ endforeach(qm)
+ file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/translations.qrc.in"
+ "
+
+ ")
+endfunction()
-execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
- ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc.in
- ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc)
+generate_translation_resource()
+configure_file(${CMAKE_CURRENT_BINARY_DIR}/translations.qrc.in ./translations.qrc COPYONLY)
-add_library(translations_library ${translations_FILES} ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc)
+add_library(translations_library ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc)
+
+# An explicit dependency is needed or AUTORCC will run before the translation files are created
+set_target_properties(translations_library PROPERTIES AUTOGEN_TARGET_DEPENDS "${translations_FILES}")