带有数据文件的自动工具

发布于 2024-10-03 12:26:20 字数 348 浏览 6 评论 0原文

我想使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

摘星┃星的人 2024-10-10 12:26:20

您可以使用 dist_data_DATA = dat/data.datdist_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 and dist_sysconf_DATA = conf/foo-pref.conf to achieve what you want. The dist_ prefix says that those files should be distributed by distributions generated with make 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 the DATA primary says to do nothing spectacular with those files, as opposed to, say SCRIPTS.

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文