Я решил это, ища переменную env, которая будет установлена только в windows.
ifdef OS
RM = del /Q
FixPath = $(subst /,\,$1)
else
ifeq ($(shell uname), Linux)
RM = rm -f
FixPath = $1
endif
endif
clean:
$(RM) $(call FixPath,objs/*)
Поскольку% OS% - это тип окон, он должен быть установлен на всех компьютерах Windows, но не в Linux.
Затем блоки устанавливают переменные для различных программ, а также функцию для преобразования прямой косой черты в обратную косую черту.
Вам необходимо использовать $ (вызывать FixPath, путь) при вызове внешней команды (внутренние команды работают нормально). Вы также можете использовать что-то вроде:
/ := /
, а затем
objs$(/)*
если вам больше нравится этот формат.