在使用automake的项目中,我应该根据包名称制作目录和可执行文件名吗?

时间:2015-04-21 21:42:26

标签: autoconf automake

configure.ac的第一行,我需要告诉autoconf我的包裹的名称是什么:

AC_INIT([xjump], [2.8], [])

我应该尽量避免在代码中复制“xjump”名称,还是在需要时硬编码“xjump”?更具体地说:

1。对于/ var

中的目录

在我的安装脚本中,我需要在“/ var”中创建一个目录。我应该使用

install-exec-hook:
    mkdir -p    @localstatedir@/@PACKAGE@
    touch       @localstatedir@/@PACKAGE@/highscores

或者我应该使用

install-exec-hook:
    mkdir -p    @localstatedir@/xjump
    touch       @localstatedir@/xjump/highscores

此外,当我运行make uninstall时,高分文件仍保留在那里。我应该添加一个卸载钩子来删除它还是有办法自动处理它?<​​/ p>

2。可执行文件名称

现在我的可执行文件的名称是硬编码的

bin_PROGRAMS = xjump
xjump_SOURCES = game.c

有没有办法让它不成为?我尝试运行它时出现以下错误:

# error: 'bin_PROGRAMS' contains configure substitution
bin_PROGRAMS = @PACKAGE@
@PACKAGE@_SOURCES = game.c 

3。手册页

与关于binaies的问题类似,是否有办法使手册页名称不是硬编码的?

dist_man_MANS = xjump.6

1 个答案:

答案 0 :(得分:2)

一般来说,你不应该这样做 - 不是因为它一定是个坏主意,而是因为autoconf已经有了一个通用设施来做这样的事情,而这个设施把控制权掌握在手中用户所属的用户。

要了解如何以用户身份使用此功能,请在Autoconf手册中搜索--program-transform-name(以及相关选项)。这些提供了一种在安装时重命名程序的方法。 Automake会自动将这些转换应用于程序和其他一些可安装对象,而无需您做任何努力。 (这是Automake免费提供的众多附加功能之一。)

现在,Automake并未在所有情况下应用此转换。有时你必须亲自在Makefile.am中自己动手。在您的问题中,这适用于/var案例。我不认为你应该什么时候做这个以及什么时候做的时候会有一个强硬的规则。通常做的一个原因是,如果您希望您的程序可以并行安装&#34; - 意味着用户可能希望安装多个版本并同时并排运行。但是,在这种情况下,&#34;正常&#34;要做的事情不是使用程序转换,而是将版本号放入目录名称(和程序名称等)。