我有一个包含如下语句的 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 文档:
- https://www.gnu.org/software/make/manual/html_node/Wildcard-Function.html
- https://www.gnu.org/software/make/manual/make.html#Choosing-the-Shell
但我没有找到任何可以帮助我的东西。
另外,我正在使用的 make 版本可以从http://gnuwin32.sourceforge.net/packages/make.htm下载,在提出这个问题时,我正在使用的版本是GNU Make 3.81