代码之家  ›  专栏  ›  技术社区  ›  user541686

如何处理动态检测到的Makefile中的未知依赖项?

  •  0
  • user541686  · 技术社区  · 7 年前

    假设我的Makefile正在构建一个网站。我写了一封信 index.html 包含资产,如下所示:

    <html>
      <body><img src="asset/foo.img"/></body>
    </html>
    

    现在,我想编写一个规则来创建包含HTML及其资产的ZIP存档。

    src= 属性,但我该如何处理它呢?
    如果我把它放在菜谱中,但在那一点上,Makefile规则不能更改。
    $(shell ...) clean 或者别的什么。

    处理这种情况的正确方法是什么?

    3 回复  |  直到 7 年前
        1
  •  1
  •   user541686    7 年前

    事实上,我想我是自己想出来的。解决方案是对 $(MAKE) include 它似乎发生在配方执行时而不是解析时。

        2
  •  0
  •   Renaud Pacalet    7 年前

    也许是这样的:

    assets := $(shell ./myscript index.html)
    
    myzip.zip: index.html $(assets)
        zip $@ $^
    
        3
  •  0
  •   Vroomfondel    7 年前

    我似乎很想念你的问题。您的情况的依赖关系树不是如下所示:

    my_page.html   image1.bmp    image2.bmp
      |    |           |            |
      1    2           2            2
      |    |           |            |
      |     \          |           /
      |      \         |          /
      |       \        |         /
      |        \       |        /
      |         \      |       /
      |          \     |      /
    depend.dep    archive.zip
    

    其中“1”是扫描的规则 my_page.html 用于所有资产,并将其写回 depend.dep dep.dep makefile archive.zip 如果是新的。我再说一遍:重新解析 my_page.html 在make run中,如果存在对以下文件的依赖关系: include d或 生成文件