7

我怎么知道automake在我想要的地方安装任意数据文件?

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

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

真的感谢!

4

1 回答 1

14

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

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

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

然后,当您是用户时,将make install前缀设置为/usr. 如果您尝试在 Makefile.am 中使用绝对路径,它将不允许分阶段安装(即设置 DESTDIR),会限制用户的灵活性,并且是错误的做法。要点是包维护者无法选择最终位置;这是用户的决定。

于 2012-05-23T14:33:10.863 回答