我有一个数据目录,我希望 automake 为其生成安装和卸载目标。本质上,我只想将此目录逐字复制到 DATA 目录,通常,我可能会单独列出所有文件,例如
dist_whatever_DATA=dir/subdir/filea ...
但是当我的目录结构如下所示时,问题就出现了
*root
*subdir
*~10 files
*subdir
*~10 files
*subdir
*~700 files
*subdir
...
~20 subdirs
I just cannot列出我的 Makefile.am 中包含的所有 1000 多个文件。那太荒谬了。
我还需要保留目录结构。我应该注意到这个数据是not完全由构建过程生成,实际上大部分是简短的录音。所以我不想让 automake “检查”我想要安装的每个文件是否实际上已创建,因为它们要么存在,要么不存在,无论存在什么文件,我知道我希望安装它,等等文件不是,不应安装。我知道这是在其他地方使用的不进行通配符安装的理由,但所有可能的原因并不适用于此。
我会使用一个脚本来生成Makefile
列出所有文件的片段:
echo 'subdir_files =' > subfiles.mk
find subdir -type f -print | sed 's/^/ /;$q;s/$/ \\/' >> subfiles.mk
然后包括这个subfiles.mk
从你的主要Makefile.am
:
include $(srcdir)/subfiles.mk
nobase_dist_pkgdata_DATA = $(subdir_files)
第二个选择是EXTRA_DIST = subdir
,然后编写自定义install-data-local
and uninstall-local
rules.
这里的问题是EXTRA_DIST = subdir
将分发所有文件subdir/
,包括备份文件、配置文件(例如来自您的 VCS)以及您不想分发的其他内容。
使用上面的脚本可以让您过滤您真正想要分发的文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)