我们的测试数据由两个文件夹组织。我们有 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
的前缀?
nobase
前缀的发明目的。 该名称代表"不要调用basename",其用法如下:
nobase_dist_pkgdata_DATA =
$(testdata_FILES)
$(testvector_FILES)
这应该会导致列出的文件将其目录名称保留在安装树中。
我的问题是,我们如何在安装过程中保留 TestData 或 TestVector 的前缀?
通常,Automake 会计算每个目标的基名称,并在安装时使用该基名称将文件直接记录在指定目录中。 如果目标名称包含要传播到已安装映像中的目录前缀,则可以通过在相关目标变量上使用nobase_
前缀来告知 Automake。 这可以与其他前缀结合使用,例如 dist_
. 例如
nobase_dist_pkgdata_DATA =
$(testdata_FILES)
$(testvector_FILES)
前缀一般在自动制作手册的第 3.3 节中描述,特别是nobase_
在自动制作手册的第 12.1 节中详细介绍。