| GNU Make Manual | www.imodulo.com · 2003-04-05 | ||
| [ Software | Documentation | Contact ] |
The commands in built-in implicit rules make liberal use of certain predefined variables. You can alter these variables in the makefile, with arguments to make, or in the environment to alter how the implicit rules work without redefining the rules themselves. You can cancel all variables used by implicit rules with the -R or -no-builtin-variables option.
For example, the command used to compile a C source file actually says $(CC) -c $(CFLAGS) $(CPPFLAGS). The default values of the variables used are cc and nothing, resulting in the command cc -c. By redefining CC to ncc, you could cause ncc to be used for all C compilations performed by the implicit rule. By redefining CFLAGS to be -g, you could pass the -g option to each compilation. All implicit rules that do C compilation use $(CC) to get the program name for the compiler and all include $(CFLAGS) among the arguments given to the compiler.
The variables used in implicit rules fall into two classes: those that are names of programs (like CC) and those that contain arguments for the programs (like CFLAGS). (The "name of a program" may also contain some command arguments, but it must start with an actual executable program name.) If a variable value contains more than one argument, separate them with spaces.
Here is a table of variables used as names of programs in built-in rules:
ARArchive-maintaining program; default ar.
ASProgram for doing assembly; default as.
CCProgram for compiling C programs; default cc.
CXXProgram for compiling C++ programs; default g++.
COProgram for extracting a file from RCS; default co.
CPPProgram for running the C preprocessor, with results to standard output; default $(CC) -E.
FCProgram for compiling or preprocessing Fortran and Ratfor programs; default f77.
GETProgram for extracting a file from SCCS; default get.
LEXProgram to use to turn Lex grammars into C programs or Ratfor programs; default lex.
PCProgram for compiling Pascal programs; default pc.
YACCProgram to use to turn Yacc grammars into C programs; default yacc.
YACCRProgram to use to turn Yacc grammars into Ratfor programs; default yacc -r.
MAKEINFOProgram to convert a Texinfo source file into an Info file; default makeinfo.
TEXProgram to make TeX dvi files from TeX source; default tex.
TEXI2DVIProgram to make TeX dvi files from Texinfo source; default texi2dvi.
WEAVEProgram to translate Web into TeX; default weave.
CWEAVEProgram to translate C Web into TeX; default cweave.
TANGLEProgram to translate Web into Pascal; default tangle.
CTANGLEProgram to translate C Web into C; default ctangle.
RMCommand to remove a file; default rm -f.
Here is a table of variables whose values are additional arguments for the programs above. The default values for all of these is the empty string, unless otherwise noted.
ARFLAGSFlags to give the archive-maintaining program; default rv.
ASFLAGSExtra flags to give to the assembler (when explicitly invoked on a .s or .S file).
CFLAGSExtra flags to give to the C compiler.
CXXFLAGSExtra flags to give to the C++ compiler.
COFLAGSExtra flags to give to the RCS co program.
CPPFLAGSExtra flags to give to the C preprocessor and programs that use it (the C and Fortran compilers).
FFLAGSExtra flags to give to the Fortran compiler.
GFLAGSExtra flags to give to the SCCS get program.
LDFLAGSExtra flags to give to compilers when they are supposed to invoke the linker, ld.
LFLAGSExtra flags to give to Lex.
PFLAGSExtra flags to give to the Pascal compiler.
RFLAGSExtra flags to give to the Fortran compiler for Ratfor programs.
YFLAGSExtra flags to give to Yacc.
| © Free Software Foundation, Inc. |