使用automake安装配置文件和日志文件

St0*_*0rM 5 automake

假设我有一个这样的项目:

(dev dir)
- README
- INSTALL
/ src
  - blah.cpp
  - blah.hpp
/ conf
  - blah_one.xml
  - blah_two.xml
Run Code Online (Sandbox Code Playgroud)

我创建了一个configure.ac和Makefile.am来在(/ usr/local)/ bin下安装二进制文件.configure.ac是这样的:

AC_INIT([blah], [0.1])
AC_PREREQ([2.67])
AM_INIT_AUTOMAKE([1.11])
AC_CONFIG_SRCDIR([src/blah.cpp])
AC_PROG_CXX
AC_LANG([C++])
AC_HEADER_STDC
AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([src/Makefile])
AC_OUTPUT
Run Code Online (Sandbox Code Playgroud)

...... Makefile就像

SUBDIRS = src
Run Code Online (Sandbox Code Playgroud)

...和src/Makefile.am类似

bin_PROGRAMS = blah
blah_SOURCES = blah.cpp blah.hpp
Run Code Online (Sandbox Code Playgroud)

一切正常,"make install"正确安装(/ usr/local)/ bin下的二进制文件.

现在:

我想扩展这些命令"make install"(在configure,build之后),在/ etc/blah下安装配置文件blah_one.xml和blah_two.xml,并在/ var/log下"准备"一个日志目录/废话/

这样做的正确方法是什么?

lda*_*v1s 9

好吧,我会这样做:

blahconfdir=$(sysconfdir)/blah
blahconf_DATA = blah_one.xml blah_two.xml
blahlogdir = $(localstatedir)/log/blah
Run Code Online (Sandbox Code Playgroud)

然后当你配置:

./configure --sysconfdir=/etc --localstatedir=/var
Run Code Online (Sandbox Code Playgroud)

在不知道"准备"步骤的细节的情况下,很难知道需要发生什么,以及如何实现它.