使用Automake在固定位置安装任意数据文件?

时间:2012-05-23 14:16:11

标签: autotools automake datadirectory

如何告诉automake在我想要的地方安装任意数据文件?

我有一些文件需要放在特定的地方,例如我的项目中的“datafile1”需要复制到“/usr/MyProduct/flash_memory”。

  • /usr/MyProduct/flash_memory”是我无法改变的绝对路径。
  • datafile1”是一个二进制数据文件,不是由make“构建”的,只需要make install复制。
  • 我无法忍受make dist。它需要由make install复制(这是一个很长的解释,因此,pelase只考虑这一点)。
  • 我宁愿不使用install-hook,但更喜欢采用更优雅的方法(如果可能的话)。

非常感谢!

1 个答案:

答案 0 :(得分:12)

不要在Makefile.am中使用完整路径。永远。您可以告诉automake将datafile1放在$(datadir)中,这将扩展为$(prefix)/share/MyProduct,或者您可以定义flash_DIR以扩展为$(prefix)/MyProduct/flash_memory并将文件放在那里,但必须允许最终用户将$(prefix)设置为/usr或其他内容。你想在Makefile.am做什么:

flashdir = $(prefix)/$(PACKAGE)/flash_memory
flash_DATA = datafile1

(使用$(prefix)/@PACKAGE@/flash_memory可能更合适,因为PACKAGE在制作时可能不应该是可修改的,但我认为这不是非常重要。)

然后,当您是用户时,请运行前缀设置为make install的{​​{1}}。如果您尝试在Makefile.am中使用绝对路径,它将禁止分阶段安装(即设置DESTDIR),将限制用户灵活性,并且错误要做的事情。重点是包维护者无法选择最终位置;这是用户的决定。