如何使用automake分发数据目录中的所有文件

时间:2017-06-23 17:17:54

标签: autoconf automake

我的包中使用了一些数据文件。它们是目录中的74个文件。根据{{​​3}}部分 9.3与架构无关的数据文件,我可以单独列出它们

dist_pkgdata_DATA = mydir/file1 mydir/file2 ..... mydir/file74

打字太多了。谁能建议一个好的解决方案? 对于这样的问题有一个automake manual,但它本质上是相同的机制(手动列出所有文件)。由于程序员很懒,我们不想输入它们。此外,每次需要添加新文件或删除旧文件时​​,都必须更新Makefile.am。

1 个答案:

答案 0 :(得分:0)

如果您不想在所有the compressed file approach上列出文件,那么安装/卸载挂钩对于大量文件来说就像是一种合理的方法,特别是如果它们本质上是&#34 ;只写#34;。

如果您希望这些文件通常可以检查,您必须执行以下操作:

MYDIR = mydir
EXTRA_DIST = $(MYDIR)

install-data-local:
        test -z $(pkgdatadir) || $(MKDIR_P) $(pkgdatadir)
        find "$(MYDIR)" -type f -exec $(INSTALL_DATA) {} $(pkgdatadir) \;

太多打字"部分是由于dist_前缀 - automake被告知打包这些文件以进行分发tarball。另一方面,EXTRA_DIST会将目录的全部内容包含在tarball中,但您必须在以后指定如何处理这些文件。它也确实无法检查。如果mydir包含2个文件或74个文件,则它与automake完全相同。

另一种解决方法是在bootstrap.sh中调用另一个程序(在调用autoreconf之前)创建一个定义dist_pkgdata_DATA的makefile片段,然后在{includedMakefile.am 1}}。这仍然无法解决正确数量的文件问题。