【问题标题】:Preserve data file prefix when using dist_pkgdata_DATA?使用 dist_pkgdata_DATA 时保留数据文件前缀?
【发布时间】:2017-11-15 05:23:12
【问题描述】:

我们的测试数据由两个文件夹组成。我们有TestData/TestVectors/,取决于数据的形式:

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

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

Our 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@/ 中,但我们在安装时丢失了 TestDataTestVectors 前缀。也就是说,一旦安装,所有文件都集中在一起:

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

Install arbitrary data files in arbitrary locations with Automake? 有一个非常相似的问题,但我并没有完全遵循确保make install 按预期工作所需做的事情。

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

【问题讨论】:

    标签: autotools automake datadirectory


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢。
    【解决方案2】:

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

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

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

    一般前缀在section 3.3 of the Automake manual 中描述,nobase_ 特别详细在section 12.1 of the Automake manual 中。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 2023-03-24
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 2015-07-09
    相关资源
    最近更新 更多