Qt 5.0.2 + CMake 2.8.11.1 + QT5_CREATE_TRANSLATION: how to prevent delete existing ts file during clean



  • I use QT5_CREATE_TRANSLATION inside my CMakelists.txt to keep my ts files in actual state. It is very useful. But when I call make clean my ts files are cleaned also. If I understand right it is because of

    add_custom_command(OUTPUT ${_ts_file}
    COMMAND ${Qt5_LUPDATE_EXECUTABLE}
    ARGS ${_lupdate_options} "@${_ts_lst_file}" -ts ${_ts_file}
    DEPENDS ${_my_sources} ${_ts_lst_file} VERBATIM)

    inside the QT5_CREATE_TRANSLATION function.

    Is there way to prevent ts file deletion during the clean operation?

    Thanks in advance.



  • I have written the following patch for Qt5LinguistToolsMacros.cmake which can solve the above problem:
    @
    *** C:/Qt/Qt5.0.2/5.0.2/msvc2010/lib/cmake/Qt5LinguistTools/Qt5LinguistToolsMacros.cmake.old Wed Jun 19 12:00:16 2013
    --- C:/Qt/Qt5.0.2/5.0.2/msvc2010/lib/cmake/Qt5LinguistTools/Qt5LinguistToolsMacros.cmake Wed Jun 19 11:48:38 2013


    *** 52,57 ****
    --- 52,59 ----
    list(APPEND _my_sources ${_abs_FILE})
    endif()
    endforeach()

    • declare temp ts files list

    • set(_my_temptsfiles)
      foreach(_ts_file ${_my_tsfiles})
          if(_my_sources)
            # make a list file to call lupdate on, so we don't make our commands too
      

    *** 71,83 ****

            file(WRITE ${_ts_lst_file} "${_lst_file_srcs}")
          endif()
          add_custom_command(
    

    ! OUTPUT ${_ts_file}
    COMMAND ${Qt5_LUPDATE_EXECUTABLE}
    ARGS ${_lupdate_options} "@${_ts_lst_file}" -ts ${_ts_file}
    DEPENDS ${_my_sources} ${_ts_lst_file} VERBATIM)
    endforeach()
    ! qt5_add_translation(${_qm_files} ${_my_tsfiles})
    set(${_qm_files} ${${_qm_files}} PARENT_SCOPE)
    endfunction()

    --- 73,93 ----

            file(WRITE ${_ts_lst_file} "${_lst_file_srcs}")
          endif()
    
    •     get_filename_component(_ts_nm ${_ts_file} NAME)
      
    • set(_tmpts_file "${CMAKE_CURRENT_BINARY_DIR}/${_ts_nm}")
    • list(APPEND _my_temptsfiles ${_tmpts_file})
    •     get_source_file_property(_qm_output_location ${_ts_file} OUTPUT_LOCATION)
          add_custom_command(
      

    ! OUTPUT ${_tmpts_file}
    COMMAND ${Qt5_LUPDATE_EXECUTABLE}
    ARGS ${_lupdate_options} "@${_ts_lst_file}" -ts ${_ts_file}

    • COMMAND ${CMAKE_COMMAND} -E copy ${_ts_file} ${_tmpts_file}
      DEPENDS ${_my_sources} ${_ts_lst_file} VERBATIM)
    • if( _qm_output_location )
    • set_property(SOURCE ${_tmpts_file} PROPERTY OUTPUT_LOCATION ${_qm_output_location})
    • endif()
      endforeach()
      ! qt5_add_translation(${_qm_files} ${_my_temptsfiles})
      set(${_qm_files} ${${_qm_files}} PARENT_SCOPE)
      endfunction()
      @

Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.