diff options
author | Paul Smith <psmith@gnu.org> | 2002-09-04 07:26:19 +0000 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2002-09-04 07:26:19 +0000 |
commit | 988deb489b89889b97f82e3095d267d09ff7e7ab (patch) | |
tree | 8127d7aa6cfedde3f284f5c6ae77e4f2eefee59e /doc | |
parent | d2429d7508169501d2dfeefca5608005142fe236 (diff) | |
download | gunmake-988deb489b89889b97f82e3095d267d09ff7e7ab.tar.gz |
Fix for complex situations where directories are declared as prerequisites.
Info on this fix from barkalow@reputation.com: thanks!
Some updates/cleanups of some of the tests; added a forgotten -t test, etc.
Diffstat (limited to 'doc')
-rw-r--r-- | doc/make.texi | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/doc/make.texi b/doc/make.texi index b36383a..4ef1107 100644 --- a/doc/make.texi +++ b/doc/make.texi @@ -999,13 +999,25 @@ Defining a variable from a verbatim string containing multiple lines @cindex comments, in makefile @cindex @code{#} (comments), in makefile @item -@samp{#} in a line of a makefile starts a @dfn{comment}. It and the rest of -the line are ignored, except that a trailing backslash not escaped by -another backslash will continue the comment across multiple lines. -Comments may appear on any of the lines in the makefile, except within a -@code{define} directive, and perhaps within commands (where the shell -decides what is a comment). A line containing just a comment (with -perhaps spaces before it) is effectively blank, and is ignored.@refill +@samp{#} in a line of a makefile starts a @dfn{comment}. It and the +rest of the line are ignored, except that a trailing backslash not +escaped by another backslash will continue the comment across multiple +lines. A line containing just a comment (with perhaps spaces before +it) is effectively blank, and is ignored. If you want a literal +@code{#}, escape it with a backslash (e.g., @code{\#}). Comments may +appear on any line in the makefile, although they are treated +specially in certain situations. + +Within a command script (if the line begins with a TAB character) the +entire line is passed to the shell, just as with any other line that +begins with a TAB. The shell decides how to interpret the text: +whether or not this is a comment is up to the shell. + +Within a @code{define} directive, comments are not ignored during the +definition of the variable, but rather kept intact in the value of the +variable. When the variable is expanded they will either be treated +as @code{make} comments or as command script text, depending on the +context in which the variable is evaluated. @end itemize @node Makefile Names, Include, Makefile Contents, Makefiles @@ -2322,10 +2334,11 @@ clean: @end example Another example of the usefulness of phony targets is in conjunction -with recursive invocations of @code{make}. In this case the makefile -will often contain a variable which lists a number of subdirectories to -be built. One way to handle this is with one rule whose command is a -shell loop over the subdirectories, like this: +with recursive invocations of @code{make} (for more information, see +@ref{Recursion, ,Recursive Use of @code{make}}). In this case the +makefile will often contain a variable which lists a number of +subdirectories to be built. One way to handle this is with one rule +whose command is a shell loop over the subdirectories, like this: @example @group @@ -3597,7 +3610,10 @@ subsystem: You can write recursive @code{make} commands just by copying this example, but there are many things to know about how they work and why, and about -how the sub-@code{make} relates to the top-level @code{make}. +how the sub-@code{make} relates to the top-level @code{make}. You may +also find it useful to declare targets that invoke recursive +@code{make} commands as @samp{.PHONY} (for more discussion on when +this is useful, see @ref{Phony Targets}). For your convenience, GNU @code{make} sets the variable @code{CURDIR} to the pathname of the current working directory for you. If @code{-C} is |