Search code examples
makefilepidtemporary-directory

How to get pid of my make command in the Makefile?


I want to use a temp directory that will be unique to this build. How can I get the pid of my make command in the Makefile?

I tried:

TEMPDIR = /tmp/myprog.$$$$

but this seems to store TEMPDIR as /tmp/myprog.$$ and then eval as a new pid for every command which refs this! How do I get one pid for all of them (I'd prefer the make pid, but anything unique will do).

Thanks in advance.


Solution

  • Try mktemp for creating unique temporary filenames. The -d option will create a directory instead of a file.

    TEMPFILE := $(shell mktemp)
    TEMPDIR := $(shell mktemp -d)
    

    Note the colon. (Editor's note: This causes make to evaluate the function once and assign its value instead of re-evaluating the expression for every reference to $(TEMPDIR).)