Я работаю над файлом Windows Make, который имеет следующий оператор
Win10_SDK_Version := $(shell find $(WROOT_WIN10_SDK)/Include -maxdepth 1 -type d -path $(WROOT_WIN10_SDK)/Include/[0-9.]* -exec basename {}\; 2> output.txt | sort | tail -n 1)
Однако я вижу, что переменная Win10_SDK_Version не заполнена.Для отладки я напечатал переменную $ (WROOT_WIN10_SDK) непосредственно перед этой строкой, и она заполняется, как и ожидалось
WROOT_WIN10_SDK=["E:/Myscpetre20/depot/sim/sim-20fq1/build/gobuild/compcache/cayman_msvc_desktop/ob-11144741/windows2016-clean/win/Program Files/Windows Kits/10"]
И содержимое файла output.txt говорит о том, что инструкция завершилась неудачно - find: basename: No such file or directory
Если я сокращу приведенный выше оператор до нижеследующего, исключая exec basename ---
Win10_SDK_Version := $(shell find $(WROOT_WIN10_SDK)/Include -maxdepth 1 -type d -path $(WROOT_WIN10_SDK)/Include/[0-9.]* 2> output.txt | sort | tail -n 1)
Вышеприведенный оператор выполняется нормально, поэтому убедитесь, что это какая-то проблема с тем, как я использую "-execбазовое имя {} \; ".Я также попытался включить одинарные кавычки для базового имени, как показано ниже -
Win10_SDK_Version := $(shell find $(WROOT_WIN10_SDK)/Include -maxdepth 1 -type d -path $(WROOT_WIN10_SDK)/Include/[0-9.]* -exec 'basename {}'\; 2> output.txt | sort | tail -n 1)
Но даже если это не удастся, кто-нибудь может подсказать мне, как правильно включить базовое имя exec в приведенном выше утверждении?