Autoconf支持在安装程序的时候修改程序的名称。为了使用这些变换,`configure.in’必须调用宏 AC_ARG_PROGRAM。

宏: AC_ARG_PROGRAM
把对被安装的程序的名称进行替换的sed命令序列存入输出变量program_transform_name中。

如果把下列任意选项传递给了configure,程序名就据此进行变换。 否则,如果已经调用了AC_CANONICAL_SYSTEM并且--target'的值给出了与主机类型 (用–host’给出的,或者是在config.sub中设置的缺省值)不同的类型,就把末尾附加了 破折号的目标类型作为前缀。否则,就不进行程序名变换。

转换选项
你可以把下列命令行选项传递给configure以指定名称的转换:

–program-prefix=prefix
为名称添加前缀prefix;
–program-suffix=suffix
为名称添加后缀suffix;
–program-transform-name=expression
对名字作sed替换expression。
转换的例子
这些变换对于作为交叉编译开发环境的一部分的程序是有用的。例如,用--target=i960-vxworks'选项配置的 运行在Sun 4上的交叉汇编器通常以i960-vxworks-as’为名称进行安装,而不是以`as’为名安装,该名称 将于原来的Sun 4汇编器混淆。

如果你不希望安装在你的系统上的GNU程序遮蔽具有相同名称的其它程序,你可以强行要求程序名以g'开头。 例如,如果你使用–program-prefix=g’来配置GNU diff,那么在你运行make install'的时候,它就安装到/usr/local/bin/gdiff’。

作为更复杂的例子,你可以使用

–program-transform-name=’s/^/g/; s/^gg/g/; s/^gless/less/‘
在源代码树中的大部分程序的名字之前附加g',已经含有一个g’的程序,诸如gdb, 和不是GNU程序的程序,比如说less和lesskey,除外。(它假定你有一个包含了设置成使用 这些特征的程序的源代码树。)

同时安装某些程序的多个版本的一种方法是为其中一个程序的名称或为所有程序的名称附加版本号。例如,如果你还希望把 Autoconf版本1保留一段时间,你可以使用--program-suffix=2'来配置Autoconf第2版,并且以名称/usr/local/bin/autoconf2’、`/usr/local/bin/autoheader2’等等来安装程序。

转换的规则
下面是如何在`Makefile.in’中使用变量program_transform_name:

transform=@programtransformname@
install: all
$(INSTALL_PROGRAM) myprog $(bindir)/echo myprog|sed '$(transform)'

uninstall:
rm -f $(bindir)/echo myprog|sed '$(transform)'
如果你要安装多个程序,你可以通过一个循环来完成:

PROGRAMS=cp ls rm
install:
for p in $(PROGRAMS); do
$(INSTALL_PROGRAM) $$p $(bindir)/echo $$p|sed '$(transform)';
done

uninstall:
for p in $(PROGRAMS); do
rm -f $(bindir)/echo $$p|sed '$(transform)';
done
是否在文档文件中进行变换(Texinfo或者man)是个麻烦的问题;由于名称变换的几个原因,好像不存在完美的答案。 文档对于特定的结构来说并不特殊,并且Texinfo文件与系统文档并不冲突。但它们可能与同一文件的早期版本冲突,而且 man手册有时与系统文档冲突。作为一个折衷,可能最好是对man手册进行名称替换而不对Texinfo手册 进行替换。