MAKEPPREPLAY(1) | Makepp | MAKEPPREPLAY(1) |
makeppreplay -- Fast repeater of selected makepp actions
?: -?, A: -A,
--args-file,
--arguments-file, C: -C,
-c, D: --directory,
--dry-run, H: -h,
--help, I: -I,
--include,
--include-dir, J: --just-print,
K: -k,
--keep-going, L: --log,
--log-file, M: -M,
$MAKEPPREPLAYFLAGS,
--module, N: -n,
--no-log,
--no-print-directory,
--no-warn, P: --profile,
R: --recon,
--root-dir,
--root-directory, S: -s,
--sed, T: -t,
--temporary, V: -V,
--version
makeppreplay [ option ... ] [ VAR=value ] [ target ... ]
mppr [ option ... ] [ VAR=value ] [ target ... ]
Makeppreplay tries to do the same things makepp did. It does this solely based on the remembered build info, saving much time by not reading makefiles, not parsing commands, not scanning files and not looking at every repository file, to see whether it fits. But unlike makepp it reuses all repository links it finds.
It does not know about phony or default targets, so you have to give it real files or directories, as a shortcut for all files makepp has built therein. By default it builds all files makepp built in the current or chosen directory.
This approach is only correct when there are no structural changes, i.e. no different modules to be linked, no moved files, no different "#include" statements, which should possibly have caused those files to be (re)built. After updating from version control, or when building against a repository, where others may have caused such changes, you should call makepp once after potential changes (e.g. in the morning after an overnight repository update), to be sure your build infos are up to date.
Not reading makefiles means, it will not know any subs (Perl functions) defined in them. For this you should put all your functions into an external module. It will also not know about any variable settings, which is only a problem if your Perl code accesses them (because in rule actions they have already been expanded).
This is still experimental and imperfect.
a: b b: c cmd_producing_a_and_b
Options include some of the makepp options, plus two new ones, for loading modules that would normally be loaded from a makefile.
When the command is altered, nothing is remembered about this, i.e. makepp will think you have manually modified the file, causing a rebuild.
Note that (unlike makepp) makeppreplay does not parse the command, so it won't notice that the target filename was changed. So you must still request the .o target, even though a .i will be built. And makeppclean won't know to remove it.
Probably the most common use is relinking either a program or a library after editing a source file:
makeppreplay subdir/foo.o bin/bar mppr subdir/foo.o lib/libbar.so
Makeppreplay looks at the following environment variable:
Daniel Pfeiffer (occitan@esperanto.org)
2016-11-28 | perl v5.24.1 |