【问题标题】:wildcards in cygwin make in cmd.execygwin 中的通配符在 cmd.exe 中生成
【发布时间】:2013-09-13 21:22:13
【问题描述】:

我正在尝试制作一个简单的 makefile,它将构建多个以 src 目录的子目录命名的工件。这是我的目录结构:

>find .
.
./makefile
./src
./src/binA
./src/binA/main.java
./src/binB
./src/binB/main.cpp
./src/binC
./src/binC/main.scala

这是我正在尝试使用的生成文件。由于某种原因,当我在同一规则中同时使用模式和通配符时,二进制目标拒绝扩展其依赖关系

>cat makefile
dirs    :=      $(shell find src -mindepth 1 -type d)
all:    $(dirs:src/%=bin/%.exe)
        @echo $(dirs)
bin/%.exe:      src/%/*
        @echo "$@ <-- $^"

我知道目录设置正确

src/binA src/binB src/binC

这是我得到的错误

>make
make: *** No rule to make target `bin/binA.exe', needed by `all'.  Stop.

如何制定一个通用规则,将其依赖项正确扩展为基于其名称的子目录的内容

【问题讨论】:

    标签: cmd makefile cygwin


    【解决方案1】:

    我可以通过将规则匹配器更改为 bin/%.exe: $(wildcard src/%/*) 并在此之前添加 .SECONDARYEXPANSION: 来实现此功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-23
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多