CMakeLists.txt 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. set_directory_properties( PROPERTIES CLEAN_NO_CUSTOM 1 )
  2. find_package( Qt5LinguistTools REQUIRED )
  3. # Note that _qt5_linguisttools_install_prefix is from Qt5LinguistToolsConfig.cmake
  4. # and probably a private variable...
  5. set( QT_PATH ${_qt5_linguisttools_install_prefix} )
  6. if( UNIX AND NOT APPLE )
  7. set( QT_PATH "${QT_PATH}/share/qt5" )
  8. endif()
  9. set( QT_LCONVERT_EXE Qt5::lconvert )
  10. # Now handle our own .ts files
  11. file( GLOB TRANSLATION_FILES ${CMAKE_CURRENT_LIST_DIR}/*.ts )
  12. qt5_add_translation( TRANSLATION_QM ${TRANSLATION_FILES} )
  13. add_custom_target( translations ALL DEPENDS ${TRANSLATION_QM} )
  14. # For each language we have .ts files for, process Qt's qm files
  15. # (they need to be concatenated into one file)
  16. foreach( TRANSLATION_FILE ${TRANSLATION_FILES} )
  17. get_filename_component( FILENAME ${TRANSLATION_FILE} NAME )
  18. # Our files are named like this: CloudCompare_fr.qm
  19. # We want just the language part - "fr" so we can find the right files from the Qt install
  20. string( REGEX REPLACE "[^_]+_([^._]+).+" "\\1" LANG_CODE ${FILENAME} )
  21. unset( QT_LANG_FILES )
  22. unset( TRANSLATION_FILES_QT_EXIST )
  23. # These are the Qt files we want to add if they exist
  24. set( QT_LANG_FILES
  25. ${QT_PATH}/translations/qtbase_${LANG_CODE}.qm
  26. )
  27. # Now check that they exist
  28. foreach ( QT_LANG_FILE IN ITEMS ${QT_LANG_FILES} )
  29. if ( EXISTS ${QT_LANG_FILE} )
  30. list( APPEND TRANSLATION_FILES_QT_EXIST ${QT_LANG_FILE} )
  31. endif()
  32. endforeach()
  33. if ( TRANSLATION_FILES_QT_EXIST )
  34. # Finally, add a command to generate the qt language file for this language
  35. set( QT_LANG_FILE qt_${LANG_CODE}.qm )
  36. set( TRANSLATION_QM ${TRANSLATION_QM} ${CMAKE_CURRENT_BINARY_DIR}/${QT_LANG_FILE} )
  37. add_custom_command(
  38. OUTPUT
  39. ${QT_LANG_FILE}
  40. DEPENDS
  41. ${TRANSLATION_FILES_QT_EXIST}
  42. COMMAND
  43. "${QT_LCONVERT_EXE}" -o ${QT_LANG_FILE} ${TRANSLATION_FILES_QT_EXIST}
  44. COMMENT
  45. "Generating Qt language file for ${LANG_CODE}"
  46. VERBATIM
  47. )
  48. add_custom_target( translations_${LANG_CODE} ALL DEPENDS qt_${LANG_CODE}.qm )
  49. endif()
  50. endforeach()
  51. if( APPLE )
  52. install( FILES ${TRANSLATION_QM} DESTINATION ${CLOUDCOMPARE_MAC_BASE_DIR}/Contents/translations )
  53. elseif( UNIX )
  54. install( FILES ${TRANSLATION_QM} DESTINATION share/cloudcompare/translations )
  55. else( WIN32 )
  56. if( CMAKE_CONFIGURATION_TYPES )
  57. install( FILES ${TRANSLATION_QM} CONFIGURATIONS Release DESTINATION ${CLOUDCOMPARE_DEST_FOLDER}/translations )
  58. install( FILES ${TRANSLATION_QM} CONFIGURATIONS Debug DESTINATION ${CLOUDCOMPARE_DEST_FOLDER}_debug/translations )
  59. elseif()
  60. install( FILES ${TRANSLATION_QM} DESTINATION ${CLOUDCOMPARE_DEST_FOLDER}/translations )
  61. endif()
  62. endif()