Сохранить префикс файла данных при использовании dist_pkgdata_DATA?

Наши тестовые данные организованы в две папки. У нас есть TestData/ а также TestVectors/в зависимости от формы данных:

- TestData
  |
  + a.dat
  + b.dat
  + ...

- TestVector
  |
  + x.vec
  + y.vec
  + ...

нашMakefile.am имеет:

dist_pkgdata_DATA = \
   $(testdata_FILES) \
   $(testvector_FILES)

testdata_FILES = \
   TestData/a.dat TestData/b.dat \
   ...

testvector_FILES = \
   TestVectors/x.vec TestVectors/y.vec \
   ...

Automake устанавливает их в @datadir@/@PACKAGE@/, но мы теряем TestData а также TestVectors префикс при установке. То есть после установки все файлы объединяются:

- @datadir@/@PACKAGE@/
  |
  + a.dat
  + b.dat
  + ...
  + x.vec
  + y.vec
  + ...

Есть очень похожий вопрос в " Установка произвольных файлов данных в произвольных местах с помощью Automake?"., но я не совсем понимаю, что нужно сделать, чтобы make install работает как положено.

У меня вопрос, как мы сохраняем префикс TestData или же TestVectors во время установки?

2 ответа

Решение

Это то, что nobase Префикс был придуман для. Название расшифровывается как "не называть базовое имя" и будет использоваться как:

nobase_dist_pkgdata_DATA = \
    $(testdata_FILES) \
    $(testvector_FILES)

Это должно привести к тому, что перечисленные файлы сохранят свои имена каталогов в дереве установки.

Мой вопрос: как мы сохраняем префикс TestData или TestVectors во время установки?

Обычно Automake вычисляет базовое имя каждой цели и использует его во время установки для записи файла непосредственно в назначенный каталог. Если целевые имена содержат префиксы каталогов, которые вы хотите распространить в установленный образ, вы можете сообщить об этом Automake, используя nobase_ префикс соответствующей целевой переменной. Это может сочетаться с другими префиксами, такими как dist_, Например,

nobase_dist_pkgdata_DATA = \
   $(testdata_FILES) \
   $(testvector_FILES)

Префиксы в целом описаны в разделе 3.3 руководства Automake, и nobase_ в частности, это подробно описано в разделе 12.1 руководства Automake.

Другие вопросы по тегам