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

j4x*_*j4x 6 automake autotools datadirectory

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

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

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

真的感谢!

Wil*_*ell 13

不要在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
Run Code Online (Sandbox Code Playgroud)

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

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

  • @fljx当你说"我无法改变"时,你的意思是"我"作为用户安装包,或者你的意思是"我"当你是包维护者.如果是前者,我的回答是有效的.如果你的意思是后者,那就停止使用automake; 你在滥用这个工具. (3认同)