And*_*nke 2 automake autotools
我正在使用GNU Autotools构建的项目。作为在用户运行时默认完成的构建的一部分./configure && make,我希望它将文件复制config/foo.conf.orig到config/foo.conf,从而生成用户可以编辑的示例配置。
我在Makefile.am文件中放入什么来实现此目的?
我试过了:
EXTRA_PROGRAMS = localconf
localconf_SOURCES = conf/foo.conf.orig
.PHONY: localconf
localconf:
echo Creating local configuration...
cp conf/foo.conf/orig conf/foo.conf
Run Code Online (Sandbox Code Playgroud)
但这没有效果。
做./configure && make localconf工程。但是我不希望用户知道他们需要调用一个特殊的目标。我希望它作为默认值的一部分发生./configure && make。
命名程序EXTRA_PROGRAMS不会导致其包含在构建中。此变量可以视为程序的声明,该程序可能包含在构建中,但未在任何其他*_PROGRAMS变量中明确命名。实际上,导致它们被构建通常涉及configure替换。这有助于满足Automake对所有目标的静态知识的需求。
如果要构建的文件是要与软件一起安装的文件(可能在用户修改之后),那么要做的就是将其命名为常规目标,并为其提供构建规则。也许是这样的:
sysconf_DATA = config/foo.conf
EXTRA_SOURCES = config/foo.conf.orig
CLEANFILES = config/foo.conf
config/foo.conf: config/foo.conf.orig
cp -p $< $@
Run Code Online (Sandbox Code Playgroud)
清单中.orig的文件当中EXTRA_SOURCES,确保它被列入你的时候make dist,我想你需要明确在命名内置文件CLEANFILES,如果你想让它受以下因素影响make clean。
如果出于某种原因不能满足您的需求,则Automake可以提供一些相当一般的规定来附加您自己的构建规则。使用这些文件,您可以使文件的构建方式如下:
EXTRA_SOURCES = config/foo.conf.orig
all-local: config/foo.conf
config/foo.conf: config/foo.conf.orig
cp -p $< $@
Run Code Online (Sandbox Code Playgroud)
您可能还需要使用一些或全部install-data-local,uninstall-local以及无论是clean-local或distclean-local。
顺便说一句,注意
$<在构建规则请参见各产品的配置文件。这有助于支持源外版本。| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |