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

В проекте используется 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
Qt + CMake: qt5_create_translation при выполнении clean-a удаляет ts файлы
    #38301202
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков,

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


Отсюда
...
Рейтинг: 0 / 0
Qt + CMake: qt5_create_translation при выполнении clean-a удаляет ts файлы
    #38302924
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Qt + CMake: qt5_create_translation при выполнении clean-a удаляет ts файлы
    #38303114
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зарегистрировал баг:

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

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

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


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