Automake:设置数据文件权限模式
Posted
技术标签:
【中文标题】Automake:设置数据文件权限模式【英文标题】:Automake: set data file permission pattern 【发布时间】:2012-06-27 18:59:16 【问题描述】:我知道我可以在复制数据文件后使用install-data-hook
做任何我想做的事情,这样我就可以按照我想要的方式调整文件权限。
不过,我的问题在它之前。
我有什么办法可以告诉automake
为任何数据组设置标准权限掩码在被复制之前?
我的意思是,我希望生成的 install
使用正确的掩码完成其任务,而不是让它使用标准的 0644
并在它更正所有文件权限之后。
换句话说,我希望任务一开始就完成,而不必稍后再修复。
有可能吗?
谢谢!
【问题讨论】:
【参考方案1】:Automake 实现了GNU Standards。这些声明应使用命令$(INSTALL_DATA)
、which should default to $(INSTALL) -m 644
安装数据文件。
您可以做的是在某些Makefile.am
中覆盖INSTALL_DATA
的值,然后此Makefile.am
安装的所有 数据文件将使用该定义。如果您有两组需要不同模式的数据文件,则必须将它们移动到两个不同的目录中,以便它们拥有自己的Makefile
。
【讨论】:
如何在Makefile.am
中设置INSTALL_DATA
?如果我尝试INSTALL_DATA = $(INSTALL) -m 600
,则会收到错误'INSTALL_DATA' is used but 'INSTALLdir' is undefined
。
你知道如何按照你的建议覆盖INSTALL_DATA
吗?可以在Makefile.am
中完成吗?如果可以,语法是什么?还是必须在另一个文件中完成?
您当然可以使用AC_SUBST
从configure.ac
覆盖它(但这对所有makefile 都是全局的)。我看不出有什么强烈的理由禁止从Makefile.am
覆盖它;我建议您将此作为错误提交。
我认为原因是automake将INSTALL_DATA
识别为"special" variable,类似于bin_PROGRAMS
和sysconf_DATA
等模式。我们如何在 Makefile.am
中更改 INSTALL_DATA
而不让 automake 认为它是一个“特殊”变量?
Automake 本身正在从一些 automake 提供的 Makefile 模板中读取 INSTALL_DATA
的定义,并且它具有特定的处理代码来不将 INSTALL_DATA
解释为特殊变量。但是,此代码仅在阅读 automake 提供的模板时才有效,而在阅读用户提供的 Makefile.am
(您的情况)时无效。这就是为什么我认为您应该将其作为错误报告给 Automake 开发人员 (bug-automake@gnu.org)。以上是关于Automake:设置数据文件权限模式的主要内容,如果未能解决你的问题,请参考以下文章