我们的测试数据由两个文件夹组成。我们有TestData/
和TestVectors/
,具体取决于数据的格式:
- TestData
|
+ a.dat
+ b.dat
+ ...
- TestVector
|
+ x.vec
+ y.vec
+ ...
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
+ ...
在Install arbitrary data files in arbitrary locations with Automake?有一个非常相似的问题,但我并不完全关注确保make install
按预期工作所需要做的事情。
我的问题是,我们如何在安装过程中保留TestData
或TestVectors
的前缀?
答案 0 :(得分:3)
这是nobase
前缀的发明。该名称代表“不要调用basename”,用作:
nobase_dist_pkgdata_DATA = \
$(testdata_FILES) \
$(testvector_FILES)
这会导致列出的文件在安装树中保留其目录名称。
答案 1 :(得分:1)
我的问题是,我们如何在安装期间保留TestData或TestVectors的前缀?
通常,Automake会计算每个目标的基本名称,并在安装时使用该名称直接将文件记录在指定目录中。如果目标名称包含要传播到已安装映像中的目录前缀,则可以通过在相关目标变量上使用 SELECT Tenant, Name, DBName,
MAX( CASE WHEN Server = 'local' and Type = 'full'
THEN Date END) as FullLocalDate,
MAX( CASE WHEN Server = 'local' and Type = 'log'
THEN Date END) as LogLocalDate,
MAX( CASE WHEN Server = 'azure' and Type = 'full'
THEN Date END) as FullAzureDate,
MAX( CASE WHEN Server = 'azure' and Type = 'log'
THEN Date END) as LogAzureDate
FROM #Results r
GROUP BY Tenant, Name, DBName
前缀来告知Automake。这可以与其他前缀组合,例如SELECT T3.*
FROM
table_1_2_join T12 /* replace this placeholder table with the select statement that joins your 2 tables */
JOIN table_3 T3 ON T3.City = T12.city AND T3.state = T12.state
。例如,
nobase_
section 3.3 of the Automake manual中描述了一般的前缀,section 12.1 of the Automake manual中详细说明了dist_
。