Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt + CMake: qt5_create_translation при выполнении clean-a удаляет ts файлы / 5 сообщений из 5, страница 1 из 1
18.06.2013, 10:52
    #38301124
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt + CMake: qt5_create_translation при выполнении clean-a удаляет ts файлы
Добрый день!

В проекте используется CMake для описания проекта. Файлы перевода хотелось быть держать актуальными, поэтому была использована функция qt5_create_translation. Но использование этой функции приводит к тому, что исходные файлы перевода, которые необходимо только обновлять, попадают в clean цель. Я попробовал исключить каталоги проектов из клининга с помощью установки свойства каталога CMAKE_NO_CUSTOM и это работает для nmake, mingw проектов, но не работает для студийного solution.

Причина проблемы проста: в qt5_create_translation используется add_custom_command, который и помещает OUTPUT в клининговую секцию.

Есть варианты заставить конкретный add_custom_command не помещать OUTPUT в цель для очистки?

Заранее спасибо!

зы: Я понимаю, что всегда остается вариант qt5_add_translation + ручной запуск утилиты lupdate, но хотелось бы сохранить феншуй автоматического обновления файлов перевода.
...
Рейтинг: 0 / 0
18.06.2013, 11:27
    #38301202
sherzod_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt + CMake: qt5_create_translation при выполнении clean-a удаляет ts файлы
Анатолий Широков,

Возможно это поможет?
Код: plaintext
1.
2.
  add_custom_target(mytarget ...)
  set_property(TARGET mytarget PROPERTY NO_CLEAN 1)


Отсюда
...
Рейтинг: 0 / 0
19.06.2013, 12:07
    #38302924
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt + CMake: qt5_create_translation при выполнении clean-a удаляет ts файлы
sherzod_,

спасибо за внимание! генератором студийного проекта это не учитывается. Пришлось пропатчить

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
*** 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()
  
...
Рейтинг: 0 / 0
19.06.2013, 13:32
    #38303114
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt + CMake: qt5_create_translation при выполнении clean-a удаляет ts файлы
Зарегистрировал баг:

https://bugreports.qt-project.org/browse/QTBUG-31860

Все заинтересованные могут завотировать.
...
Рейтинг: 0 / 0
20.06.2013, 11:21
    #38304377
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt + CMake: qt5_create_translation при выполнении clean-a удаляет ts файлы
Да, уже и патч отправил и процедуру воспроизведение проблемы, а их бюрократическая система считает, что я неверно использую qt5_create_translation и закрыла баг. Есть кто зарегистрированный на qt-project.org ? Проголосуйте, пожалуйста. Ведь реальная проблема - можно потерять работу по переводу. К тому же есть нормальный обход проблемы.

Заранее спасибо!
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt + CMake: qt5_create_translation при выполнении clean-a удаляет ts файлы / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]