用 automake/autotools 自定义 "make install"
customize "make install" with automake/autotools
我正在尝试使用 autotools 构建系统在 C++ 中创建 CGI 应用程序。此应用程序将成为我的嵌入式设备的接口。
作为 make
/make all
的结果,我有 bin
目录和 *.cgi 可执行文件,之前准备了 html-templates
和 images
目录以及 lighttpd 配置文件。
我需要将我的内容移动到目标设备的适当目录,即:
- bin 中的所有 .cgi 移动到 $(wwwdir)/cgi-bin,如果未指定,则 wwwdir 将是 /var/www/
images
目录递归到同一个 $(wwwdir) 目录
- 所有 html 模板到 $(datarootdir)/$(PACKAGE_NAME)
- lighttpd.conf 到 $(sysconfdir)
我的程序列表定义如下:
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/share
PACKAGE 中。您可能需要为您的图像文件添加一个 install hook,因为它们在现实中可能也属于 pkgdata_DATA
,但不是。
将 lighttpd.conf 添加到 sysconf_DATA
。我认为这涵盖了您的所有文件。
我正在尝试使用 autotools 构建系统在 C++ 中创建 CGI 应用程序。此应用程序将成为我的嵌入式设备的接口。
作为 make
/make all
的结果,我有 bin
目录和 *.cgi 可执行文件,之前准备了 html-templates
和 images
目录以及 lighttpd 配置文件。
我需要将我的内容移动到目标设备的适当目录,即:
- bin 中的所有 .cgi 移动到 $(wwwdir)/cgi-bin,如果未指定,则 wwwdir 将是 /var/www/
images
目录递归到同一个 $(wwwdir) 目录- 所有 html 模板到 $(datarootdir)/$(PACKAGE_NAME)
- lighttpd.conf 到 $(sysconfdir)
我的程序列表定义如下:
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/share
PACKAGE 中。您可能需要为您的图像文件添加一个 install hook,因为它们在现实中可能也属于 pkgdata_DATA
,但不是。
将 lighttpd.conf 添加到 sysconf_DATA
。我认为这涵盖了您的所有文件。