用 automake/autotools 自定义 "make install"

customize "make install" with automake/autotools


我正在尝试使用 autotools 构建系统在 C++ 中创建 CGI 应用程序。此应用程序将成为我的嵌入式设备的接口。
作为 make/make all 的结果,我有 bin 目录和 *.cgi 可执行文件,之前准备了 html-templatesimages 目录以及 lighttpd 配置文件。

我需要将我的内容移动到目标设备的适当目录,即:

我的程序列表定义如下:
bin_PROGRAMS=$(top_builddir)/bin/main.cgi(这里只有一个main.cgi)

是否有一种使用 configure.ac/Makefile.am 文件指定安装步骤的优雅方法,以便一旦用户(或其他构建系统)运行 make install 所有文件都将到达它们应该到达的位置?

目前由于 make install- 二进制文件 main.cgi 位于 /usr/local/bin/

Currently as a result of make install- binary file main.cgi lands in /usr/local/bin/.

是的,这是预期的。您可以在 运行 configure 时设置此项,例如

./configure --prefix=/var/www ...

应该将您的 bin_PROGRAMS 安装到 /var/www/bin

在你的情况下,你需要设置更多:

./configure --prefix=/var/www --bindir=/var/www/cgi-bin --sysconfdir=/wherever

应将 datarootdir 设置为 /var/www/share

将您的 HTML 模板添加到 pkgdata_DATA 应该将它们放在 /var/www/sharePACKAGE 中。您可能需要为您的图像文件添加一个 install hook,因为它们在现实中可能也属于 pkgdata_DATA,但不是。

将 lighttpd.conf 添加到 sysconf_DATA。我认为这涵盖了您的所有文件。