0

我们的测试数据由两个文件夹组织。我们有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@/,但我们在安装时丢失了TestDataandTestVectors前缀。也就是说,一旦安装,所有文件都集中在一起:

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

在使用 Automake 在任意位置安装任意数据文件中有一个非常相似的问题?,但我并没有完全遵循需要做的事情来确保make install按预期工作。

我的问题是,我们如何在安装过程中保留TestData或保留前缀TestVectors

4

2 回答 2

3

这就是nobase前缀的发明目的。该名称代表“不要调用基本名称”,其用法如下:

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

这应该会导致列出的文件在安装树中保留其目录名称。

于 2017-11-14T21:21:31.280 回答
1

我的问题是,我们如何在安装过程中保留 TestData 或 TestVectors 的前缀?

通常,Automake 计算每个目标的基本名称,并在安装时使用该基本名称将文件直接记录在指定目录中。如果目标名称包含您想要传播到已安装映像中的目录前缀,那么您可以通过使用nobase_相关目标变量上的前缀告诉 Automake。这可以与其他前缀组合,例如dist_. 例如,

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

前缀一般在Automake 手册的 3.3 节中描述,nobase_特别是在Automake 手册的 12.1 节中详细说明。

于 2017-11-14T21:23:12.540 回答