Then there are the makefiles that expect certain commands,
      such as changing to a different directory, to not affect
      other commands in a target's creation script.  You can solve
      this is either by going back to executing one shell per
      command (which is what the -B flag forces
      PMake to do), which
      slows the process down a good bit and requires you to use
      semicolons and escaped newlines for shell constructs, or by
      changing the makefile to execute the offending command(s) in
      a subshell (by placing the line inside parentheses), like
      so:
install :: .MAKE
      (cd src; $(.PMAKE) install)
      (cd lib; $(.PMAKE) install)
      (cd man; $(.PMAKE) install)This will always execute the three makes (even if the
      -n
      flag was given) because of the combination of the
      ::
      operator and the .MAKE attribute.
      Each command will change to the proper directory to perform
      the install, leaving the main shell in the directory in
      which it started.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
    documentation may be
    sent to <freebsd-questions@FreeBSD.org>.
    Send questions about this document to <freebsd-doc@FreeBSD.org>.