Articles

Makefile Debugging: A introduction to remake

remake forked from GNU Make 3.80 and is currently at version 0.62.   This version incorporates some, but not all, of the changes made in GNU Make 3.81. 

John Graham-Cumming's picture John Graham-Cumming
GNU Make Escaping: A Walk on the Wild Side

Sometimes you find yourself needing to insert a special character in a Makefile: perhaps you need a newline inside a $(error) message, or a space character in a $(subst) or a comma as the argument to a GNU Make function.  Those three simple things can be frustratingly hard in GNU Make; this article takes you through simple GNU Make syntax that removes the frustration.

John Graham-Cumming's picture John Graham-Cumming
Painless non-recursive Make

In this article, Mr. Make outlines a pattern for non-recursive Make systems that supports the familiar make-anywhere style common to recursive Make systems.  Typing make in a directory will build everything in that directory and below.

John Graham-Cumming's picture John Graham-Cumming
Atomic Rules in GNU Make

This article looks at what to do if command updates more than one file, and how to express that so that GNU Make knows that more than one file was updated and behaves correctly.

John Graham-Cumming's picture John Graham-Cumming
GNU Make meets file names with spaces in them

Suppose you are faced with creating a Makefile that needs to deal with two files named foo bar and bar baz, with foo bar built from bar ba'.  I've used italics to make clear that these are file names that include spaces.

John Graham-Cumming's picture John Graham-Cumming
Making an XML bill of materials in GNU Make

In this article I present a simple technique that causes GNU Make to create a XML file containing a "bill of materials" or BoM.  The BoM contains the names of all the files built by the Makefile and is nested to show the prerequisites of target.

John Graham-Cumming's picture John Graham-Cumming
The Basics: Getting environment variables into GNU Make

The most basic rule of GNU Make and the environment is that any variable set in the environment when GNU Make is started will be available as a GNU Make macro inside the Makefile.

John Graham-Cumming's picture John Graham-Cumming
Makefile Optimization: $(eval) and macro caching

The $(eval) function was introduced in GNU Make 3.80 but was a little buggy, 3.81 has fixed those bugs in $(eval) is ready for prime time.  $(eval)'s argument is expanded and then parsed as if it were part of a Makefile.   

John Graham-Cumming's picture John Graham-Cumming
Make: Sorting and Searching

Ask Mr. Make covera two important topics for Makefile builders with a round up of techniques for sorting and searching inside Makefiles and on the file system.

John Graham-Cumming's picture John Graham-Cumming
Target-specific and Pattern-specific GNU Make macros

This article introduces target- and pattern-specific variables and shows how they can be used to selectively alter options within a build based on the name of a target or targets being built.

John Graham-Cumming's picture John Graham-Cumming

Pages

CMCrossroads is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.