带有数据文件的自动工具
我想使用 Autotools 分发我的源代码和相关数据文件:
~/foo$ ls -R
.:
conf configure.ac dat Makefile.am src
./conf:
foo-pref.conf
./dat:
data.dat
./src:
main.c Makefile.am
这是我到目前为止所拥有的。如果没有 ./conf 和 ./dat 子目录,我可以使用 Autotools 将其设置为单个可执行文件。但我希望将 data.dat 安装在 $(prefix)/share 中,并将 foo-pref.conf 安装在适当的 /etc 目录中。我可以做什么来实现这个目标?
I want to distribute my source code and relevant data files using Autotools:
~/foo$ ls -R
.:
conf configure.ac dat Makefile.am src
./conf:
foo-pref.conf
./dat:
data.dat
./src:
main.c Makefile.am
This is what I have so far. Without the ./conf and ./dat subdirectories I can get Autotools to work to set it up for a single executable file. But I want data.dat to be installed in $(prefix)/share and foo-pref.conf to be installed in the appropriate /etc directory. What can I do to achieve this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
dist_data_DATA = dat/data.dat
和dist_sysconf_DATA = conf/foo-pref.conf
来实现您想要的。dist_
前缀表示这些文件应该由使用make dist
生成的发行版进行分发。 (在本例中)中间部分表示目标目录是什么:data
表示${datadir}
,sysconf
表示${ sysconfdir}
, ...如果需要,可以在生成的 Makefile 中查找其他内容。好吧,DATA
主要表示不要对这些文件做任何引人注目的事情,而不是说SCRIPTS
。请注意,默认情况下,configure 会将
${sysconfdir}
设置为${prefix}/etc
,而不是更习惯的/etc
。如果您想更改它,您需要使用例如./configure --sysconfdir=/etc
调用配置。You can use
dist_data_DATA = dat/data.dat
anddist_sysconf_DATA = conf/foo-pref.conf
to achieve what you want. Thedist_
prefix says that those files should be distributed by distributions generated withmake dist
. The (in this case) middle part says what the target directory is:data
for${datadir}
,sysconf
for${sysconfdir}
, ... others can be looked up in the generated Makefile, if need be. Well, and theDATA
primary says to do nothing spectacular with those files, as opposed to, saySCRIPTS
.Note that by default, configure will set
${sysconfdir}
to${prefix}/etc
as opposed to the more customary/etc
. If you want to change that, you need to call configure with e.g../configure --sysconfdir=/etc
.