【发布时间】:2021-07-10 13:39:22
【问题描述】:
我想知道是否可以在 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(即make -j 4),则我的情况的先决条件不是“耦合”在工作中,当cl_header 目标已被触发时,cl_generate 似乎没有“准时”,导致后一个目标中的sed 命令出现错误。
即使有人证明这个概念是完全错误的并为我提供启发,我将不胜感激。非常感谢。
【问题讨论】:
标签: makefile autoconf automake