Honor user-overridable standard compiler variables.

Section: Portable make basics

Use standard macros

makefile
makefile
CC = c99
CFLAGS = -O2
LDFLAGS =
LDLIBS =

app: main.o util.o
	$(CC) $(LDFLAGS) -o $@ main.o util.o $(LDLIBS)
Explanation

Keeping `CC`, `CFLAGS`, `LDFLAGS`, and `LDLIBS` overridable is a long-standing portable convention.

Learn the surrounding workflow

Compare similar commands or jump into common fixes when this command is part of a bigger troubleshooting path.

Related commands

Same sheet · prioritizing Portable make basics
POSIX-style portable rule
Write simple, explicit file rules compatible with standard make.
OpenIn sheetmakefilesame section
Portable clean target
Provide common non-file maintenance targets.
OpenIn sheetmakefilesame section
Override variables from CLI
Allow users to customize toolchain choices.
OpenIn sheetbashsame section
Suffix rule
Use classic suffix rules when targeting very portable make implementations.
OpenIn sheetmakefilesame section
Use shell short-circuit safely
Stop on failure explicitly within one recipe line.
OpenIn sheetmakefile1 tag match
Avoid eval for POSIX portability
Prefer explicit rules over GNU metaprogramming.
OpenIn sheetmakefile1 tag match