Я работаю над изменением файла Windows Make. Файл, который является частью устаревшего кода сборки, имеет следующие строки -
WROOT := "MyBuild/win/Program Files/Windows Kits/10"
ROOT_SDK_Version := $(shell find $(WROOT_WIN10_SDK)/Include -maxdepth 1 -type d -path $(WROOT_WIN10_SDK)/Include/[0-9.]* )
Переменная SHELL отображается в bin / sh, но когда я печатаю переменную ROOT_SDK_Version, она пуста. Однако, когда я вручную вызываю команду find с теми же аргументами, она выдает ожидаемый результат.
Чтобы устранить эту проблему, я изменил приведенную выше строку в файле make, как показано ниже
ROOT_SDK_Version := $(shell find $(WROOT_WIN10_SDK)/Include -maxdepth 1 -type d -path $(WROOT_WIN10_SDK)/Include/[0-9.]* 2> output.txt )
И я вижу содержимое файла output.txt после запуска make -
find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]
Так почему команда find не работает при запуске из файла make, но успешна, когда я запускаю ее вручную, используя те же аргументы? Любые указатели приветствуются.
Обеспечение большего контекста-
WROOT_WIN10_SDK: = "$ (GOBUILD_CAYMAN_MSVC_DESKTOP_ROOT) / win / Program Files / Windows Kits / 10"
Переменная GOBUID ... is == E: / Myscpetre20 / depot / sim / sim-20fq1 / build / gobuild / compcache / cayman_msvc_desktop / ob-11144741 / windows2016-clean
То есть WROOT_WIN10_SDK = = "E: / Myscpetre20 / depot / sim / sim-20fq1 / build / gobuild / compcache / cayman_msvc_desktop / ob-11144741 / windows2016-clean / win / программные файлы / комплекты Windows / 10"
*