在make install期间替换prefix / exec_prefix?

时间:2019-04-24 19:21:07

标签: makefile gnu autotools autoconf automake

我的项目使用GNU Autotools进行构建和安装。其中一些文件引用了程序包中的其他文件,我希望这些引用在用户安装程序的任何地方都得到尊重。我不知道他们是否要安装到/etc/usr/local/etc或什么版本。

我试图在AC_CONFIG_FILES时使用./configure来替代autoconf的变量。

# install.in
MY_APP=@libexecdir@/my-app.sh

# sssd.conf.in
ldap_tls_cacert = @sysconfdir@/my-app/cacert.pem
ldap_tls_cert   = @sysconfdir@/my-app/client.crt

# configure.ac
AC_CONFIG_FILES([Makefile install sssd.conf]

结果:

# install
MY_APP=${exec_prefix}/libexec/my-app.sh

# sssd.conf
ldap_tls_cacert = ${prefix}/etc/my-app/cacert.pem
ldap_tls_cert   = ${prefix}/etc/my-app/client.crt

那还不行。已执行替换,但是留下了${prefix}${exec_prefix}

那是我意识到安装位置isn't just controlled by ./configure --prefix=, but also by make install prefix=...的时候。用户在运行make install时可以更改安装位置,这意味着仅依靠AC_CONFIG_FILES不会削减安装位置。

问题:如何在没有${prefix}${exec_prefix}变量的情况下替换完整路径?

我可以添加一些内容到Makefile.am吗?我不应该使用AC_CONFIG_FILES吗?我认为这是GNU世界中一个常见且已解决的问题,只是我的google-fu使我失望了。

0 个答案:

没有答案