如何告诉automake
在我想要的地方安装任意数据文件?
我有一些文件需要放在特定的地方,例如我的项目中的“datafile1
”需要复制到“/usr/MyProduct/flash_memory
”。
/usr/MyProduct/flash_memory
”是我无法改变的绝对路径。datafile1
”是一个二进制数据文件,不是由make
“构建”的,只需要make install
复制。make dist
。它需要由make install
复制(这是一个很长的解释,因此,pelase只考虑这一点)。install-hook
,但更喜欢采用更优雅的方法(如果可能的话)。非常感谢!
答案 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),将限制用户灵活性,并且错误要做的事情。重点是包维护者无法选择最终位置;这是用户的决定。