And not if you want a decent set of warnings and standards compliance
flags passed to your compiler.
A POSIX-conforming make provided with no make file is supposed to behave
as if it were using a make file which contained the following lines
(among many others):
LDFLAGS=
CC=c99
CFLAGS=-O
..c:
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $<
The default values of CC, CFLAGS, and LDFLAGS can be overridden either
by setting the corresponding environment variables, or overriding them
explicitly from the command line. Therefore, you can customize the
behavior of make without having to create a make file. CFLAGS is the
appropriate place for the compiler flags you were talking about.
Real-world make utilities are not necessarily POSIX-conforming, or if
they are, they might not be conforming in their default mode. However,
any make that's sufficiently close to standard-conforming will tell you
what it's non-standard default rules are if you type:
make -p -f /dev/null
Even when using a non-conforming make, you're likely to find it behaving
as if it were using the above rules, if all you fiddle with are the
values of CC, CFLAGS, and LDFLAGS.
Any big project built with make has to use a make file; but if you know
what the default rules are, that make file can be pretty small, and for
small projects it can often be dispensed with entirely.