Я переношу проект из автоинструментов в cmake.У меня есть вопрос о поддержке gettext.
Существует модуль FindGettext.cmake, который предоставляет удобную функцию:
GETTEXT_CREATE_TRANSLATIONS(foo.pot ALL fr.po de.po)
, где вы предоставляете файл банка и переводите po fil;функция заботится о том, чтобы превратить po-файлы в gmo-файлы и добавить правильные цели установки, чтобы убедиться, что файлы можно найти во время выполнения.Все хорошо и хорошо.
Теперь встает вопрос: как вы обновляете свои файлы банка и ваши po-файлы, когда добавляете новые сообщения?
Для этого autotools сгенерирует цель «update-po», которая (из того, что я понимаю) читает файл POTFILES.in со списками всех файлов, содержащих переведенные строки, смешивает его с другой информацией ив конечном итоге вызывает xgetext для генерации po.Я думаю, что основная задача Makefile - это та, которая содержит что-то вроде:
case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
--files-from=$(srcdir)/POTFILES.in \
--copyright-holder='$(COPYRIGHT_HOLDER)' \
--msgid-bugs-address="$$msgid_bugs_address" \
;; \
*) \
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
--files-from=$(srcdir)/POTFILES.in \
--copyright-holder='$(COPYRIGHT_HOLDER)' \
--package-name="$${package_gnu}ube" \
--package-version='0.4.0-dev' \
--msgid-bugs-address="$$msgid_bugs_address" \
;; \
esac
Итак, прежде чем я заново изобрету колесо, есть ли существующая функция cmake, которая делает то же самое?Или я должен найти исполняемый файл xgettext, перечислить файлы и сделать это вручную?Версия makefile кажется довольно сложной (хотя, похоже, она обрабатывает множество случаев);Я не возражаю против не необходимости писать эквивалент cmake;)
Спасибо
PH