Это скорее комментарий, чем ответ, но, возможно, вы можете попытаться определить этот многоугольник как кривую Безье. Код довольно прост, и я уверен, что вы знакомы с тем, как работают эти кривые. В этом случае эта кривая будет контрольным полигоном. Но это не все идеально: во-первых, это не «сглаженная версия» этого многоугольника, а кривая и другое; чем выше степень кривой, тем меньше она выглядит как контрольный полигон. Я хочу сказать, что, возможно, вам следует попытаться решить эту проблему с помощью математических инструментов вместо того, чтобы сглаживать, а не сглаживать полигон с навыками программирования
Если вы хотите, чтобы это сработало, вы должны удвоить знаки $
в вашем определении:
define my_func
Hello $$(1) from $$(2)
endef
export my_func
Из руководства:
Для передачи вниз или export, переменная, make добавляет переменную и ее значение в среду для запуска каждой строки рецепта. Sub-make, в свою очередь, использует среду для инициализации своей таблицы значений переменных.
blockquote>Вы должны защитить
$
от одного дополнительного расширения.Of Конечно, вы не можете использовать тот же макрос в верхнем Makefile. Если это проблема, вы должны определить макрос для верхнего Makefile и еще один для make-make make-файла:
host> cat Makefile define my_func Hello $(1) from $(2) endef my_func_1 := $(call my_func,$$(1),$$(2)) export my_func_1 all: $(MAKE) -f Makefile_rec.mk $(info TOP: $(call my_func,StackOverFlow,Me)) host> cat Makefile_rec.mk all: $(info BOT: $(call my_func_1,StackOverFlow,Me)) host> make --no-print-directory TOP: Hello StackOverFlow from Me make -f Makefile_rec.mk BOT: Hello StackOverFlow from Me make[1]: 'all' is up to date.
export
повлияет на фактическое значение переменной – Zelnes 13 July 2018 в 09:16make
. Это очень интересный момент, чтобы знать – Zelnes 13 July 2018 в 09:22VAR
с результатом$(call my_func ...)
в том же Makefile, но я получаю только одно расширение. Затем у меня есть дубликатmy_func
внутриVAR
. Можно ли заставить экспансию? – Zelnes 13 July 2018 в 12:08