У меня есть 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 или любой другой подобный терминал. Тем не менее, я хотел бы знать, как использовать этот Makefile с простым cmd.exe
терминалом (у меня есть свои собственные причины для этого, поэтому, пожалуйста, не предлагайте их использовать;)).
Прямо сейчас мой env var PATH
добавил Git для windows usr\bin
пути, который содержит хороший набор инструментов из ~ 437 unix команд, и среди них есть find.
Итак например, если я запускаю find
на своем терминале ... D:\software\PortableGit\usr\bin\find.exe
будет использоваться вместо C:\Windows\System32\find.exe
, как и ожидалось, пока все хорошо до этого момента.
Проблема в том, когда я запускаю make-файл по какой-то причине я еще не понял, C:\Windows\System32\find.exe
пытается использоваться вместо этого в выражении $(shell find ...)
, поэтому я получу ошибку FIND: Parameter format not correct
при выполнении make
.
Так что в основном мой вопрос было бы, как я могу дать команду make использовать правильную unix находку, которая имеет более высокий приоритет по PATH? Но если этого было бы невозможно достичь легко ... можно ли было бы сделать это заявление более кроссплатформенным, возможно, с использованием подстановочных знаков?
Я уже проверил документы make:
но я ничего не нашел это может помочь мне.
Кроме того, версию make, которую я использую, можно скачать с http://gnuwin32.sourceforge.net/packages/make.htm, на момент запроса этого вопроса я использую версию GNU Make 3.81