在automake文件中仅订购先决条件



我想知道是否可以在Makefile.am中添加仅限订单的先决条件

pkglibexec_PROGRAMS = atarget
EXTRA_atarget_PREREQUISITE = | target_prereq_1 target_prereq_2         # <=pseudo code

因此生成的Makefile将应用这些先决条件。

作为一种变通方法,我目前使用从Makefile复制到Makefile.am中为目标生成的代码。它看起来是这样的:

pkglibexec_PROGRAMS = atarget
...
atarget_gen_program: some_source.cl
cat $^ > $@
cl_generate: atarget_gen_program
xxd -i $< > cl_gen_header.h
@rm -f $<
cl_header:
sed -i "1 s|^|/*awesome commentary*/|" cl_gen_header.h
...
$(pkglibexec_PROGRAMS)$(EXEEXT): | cl_generate cl_header $(atarget_OBJECTS) $(atarget_DEPENDENCIES) $(EXTRA_atarget_DEPENDENCIES) 
@rm -f atarget$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(atarget_OBJECTS) $(atarget_LDADD) $(LIBS)

这似乎是有效的,但可能没有相关的问题,因此,如果我在多作业模式(即make -j 4(下运行make,则当cl_header目标已经触发时,我的情况下的先决条件不是"在作业中耦合,而cl_generate似乎不准时",从而导致后一个目标中的sed命令出错。

即使有人证明这个概念是完全错误的,并为我启发这些东西,我也会很感激。非常感谢。

我建议您不要这样做。

您可以在automake文件中编写任何标准的makefile文本:它们只是makefile,之后还会为您添加一堆样板文件。

因此,您可以将其作为一个标准的make规则来定义仅限订单的目标,而无需将其添加到额外的先决条件变量中:

atarget: | target_prereq_1 target_prereq_2

相关内容

  • 没有找到相关文章

最新更新