Nuestros datos de prueba están organizados en dos carpetas. Tenemos TestData/ y TestVectors/, según la forma de los datos:

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

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

Nuestra Makefile.am tiene:

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

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

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

Automake los instala en @datadir@/@PACKAGE@/, pero perdemos el prefijo TestData y TestVectors durante la instalación. Es decir, una vez instalados, todos los archivos se agrupan:

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

Hay una pregunta muy similar en ¿Instalar archivos de datos arbitrarios en ubicaciones arbitrarias con Automake?, pero no estoy siguiendo lo que se necesita debe hacerse para asegurarse de que make install funcione como se esperaba.

Mi pregunta es, ¿cómo conservamos el prefijo de TestData o TestVectors durante la instalación?

0
jww 14 nov. 2017 a las 21:40

2 respuestas

La mejor respuesta

Para esto se inventó el prefijo nobase. El nombre significa "no llamar nombre de base" y se usaría como:

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

Esto debería dar como resultado que los archivos listados mantengan sus nombres de directorio en el árbol de instalación.

3
Tom Tromey 14 nov. 2017 a las 21:21

Mi pregunta es, ¿cómo conservamos el prefijo de TestData o TestVectors durante la instalación?

Normalmente, Automake calcula el nombre base de cada objetivo y lo usa en el momento de la instalación para registrar el archivo directamente en el directorio designado. Si los nombres de destino contienen prefijos de directorio que desea propagar en la imagen instalada, entonces puede informarle a Automake al usar el prefijo nobase_ en la variable de destino relevante. Esto se puede combinar con otros prefijos como dist_. Por ejemplo,

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

Los prefijos en general se describen en la sección 3.3 del manual de Automake, y nobase_ en particular se detalla en sección 12.1 del manual de Automake.

1
John Bollinger 14 nov. 2017 a las 21:23