2

我有一个包含如下语句的 Makefile:

  • GO_SOURCES += $(shell find $(GO_DIRS) -type f -name "*.go" -not -path modules/options/bindata.go -not -path modules/public/bindata.go -not -path modules/templates/bindata.go)

我正在尝试在 Windows 上使用它,我知道如果我只使用 cygwin、msys2、vagrant、wsl 或任何其他类似的终端,使用这个特定的文件不会有问题。也就是说,我想知道如何在普通cmd.exe终端上使用 Makefile(我有自己的理由这样做,所以请不要建议使用这些 ;))。

现在我的 env varPATH已经附加了Git for windows usr\bin路径,其中包含一个很好的工具集 ~437 unix 命令,find 就是其中之一。

因此,例如,如果我find在终端上运行...D:\software\PortableGit\usr\bin\find.exe将按C:\Windows\System32\find.exe预期使用,到目前为止一切顺利。

问题是当我出于某种原因运行 makefile 时,我还不明白C:\Windows\System32\find.exe正在尝试在语句中使用它,$(shell find ...)所以我会FIND: Parameter format not correct在执行make.

所以基本上我的问题是,我如何指示 make 使用在 PATH 上具有更高优先级的正确 unix find ?但是,如果这不可能轻易实现......是否有可能使该声明变得更加跨平台,也许使用通配符?

我已经检查了 make 文档:

但我没有找到任何可以帮助我的东西。

另外,我正在使用的 make 版本可以从http://gnuwin32.sourceforge.net/packages/make.htm下载,在提出这个问题时,我正在使用的版本是GNU Make 3.81

4

0 回答 0