Как использовать `shell find` на Make для windows? - PullRequest
2 голосов
/ 08 апреля 2020

У меня есть 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

...