首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用通配符删除makefile中的重复内容?

如何使用通配符删除makefile中的重复内容?
EN

Stack Overflow用户
提问于 2021-09-02 11:33:26
回答 2查看 54关注 0票数 0

我有一个makefile for Advent of Code,我决定在鸡的方案中这样做。

然而,它开始增长,我想删除重复的内容。

这是我到目前为止所获得的一部分,但是我如何使它能够自动查找所有天,而不是每天2个条目,并且主要目标不断增加?

代码语言:javascript
复制
all: advent2015

# advent years - this is ever increasing with the *.so targets
advent2015: $(ADVENTS_SRC)2015/advent2015.scm \
 aoc2015day01.so aoc2015day02.so
    $(CSC) $(INCLUDE_FLAGS) $< -d3 -O2 -compile-syntax -o $@

# individual days - how do i write a single rule that works for all days?
aoc2015day01.so: $(ADVENTS_SRC)2015/aoc2015day01.scm aoc-files.so
    $(CSC) $(INCLUDE_FLAGS) $(LIBFLAGS) $< -j aoc2015day01 -emit-types-file aoc2015day01.types -o $@
    $(CSC) $(INCLUDE_FLAGS) $(IMPORTFLAGS) aoc2015day01.import.scm

aoc2015day01.import.so: aoc2015day01.so
    $(CSC) $(INCLUDE_FLAGS) $(IMPORTFLAGS) aoc2015day01.import.scm

# day02...
aoc2015day02.so: $(ADVENTS_SRC)2015/aoc2015day02.scm aoc-files.so
    $(CSC) $(INCLUDE_FLAGS) $(LIBFLAGS) $< -j aoc2015day02 -emit-types-file aoc2015day02.types -o $@
    $(CSC) $(INCLUDE_FLAGS) $(IMPORTFLAGS) aoc2015day02.import.scm

aoc2015day02.import.so: aoc2015day02.so
    $(CSC) $(INCLUDE_FLAGS) $(IMPORTFLAGS) aoc2015day02.import.scm

我尝试通过在so文件中指定一个通配符来更改advent2015目标,但完全跳过了生成目标的过程。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-02 15:17:31

没问题:

代码语言:javascript
复制
DAYS := 01 02 03 04 <...> 24 25

all: advent2015

advent2015: $(ADVENTS_SRC)2015/advent2015.scm \
     $(foreach D,$(DAYS),aoc2015day$(D).so)
        $(CSC) $(INCLUDE_FLAGS) $< -d3 -O2 -compile-syntax -o $@

%.so: $(ADVENTS_SRC)2015/%.scm aoc-files.so
        $(CSC) $(INCLUDE_FLAGS) $(LIBFLAGS) $< -j $* -emit-types-file $*.types -o $@
        $(CSC) $(INCLUDE_FLAGS) $(IMPORTFLAGS) $*.import.scm

%.import.so: %.so
        $(CSC) $(INCLUDE_FLAGS) $(IMPORTFLAGS) $*.import.scm

我不确定这些命令实际上是正确的,但它们是您在上面提供的,所以如果不正确,您可以修复它们。

票数 2
EN

Stack Overflow用户

发布于 2021-09-02 12:38:43

您可能会发现csm egg很有用。我知道这意味着摆脱你的makefile,但它应该更容易做到这一点。

或者,beaker提供了基于.egg文件的构建方法,就像chicken-install使用的那些文件一样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69029464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档