As documented in the [GNU Make manual](https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html), `$%` is only used for files within archive files (which is a feature rarely used in my opinion). The automatic variable `$*` represents the matched part in implicit rules (%.o: %.c), e.g., "foo" for "foo.c".