เบเบตเปเปเบกเปเบเบเปเบฒเบชเบฑเปเบ makepp_functions เบเบตเปเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเปเปเบ OnWorks เบเบนเปเปเบซเปเบเปเบฅเบดเบเบฒเบเปเบฎเบเบเบดเปเบเบเบฃเบตเปเบเบเปเบเปเบซเบเบถเปเบเปเบเบซเบผเบฒเบเปเบเปเบญเบเปเบฎเบฑเบเบงเบฝเบเบญเบญเบเปเบฅเบเปเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบฑเปเบ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator
เปเบเบเบเบฒเบ:
NAME
makepp_functions -- เบเบฑเบเบเบฑเบเปเบ makepp
เบฅเบฒเบเบฅเบฐเบญเบฝเบ
A: absolute_filename,
absolute_filename_nolink,
abspath,
เบเบทเปเบกเบเบณเบเบณเปเปเบฒ,
เบชเปเบงเบเบเบทเปเบก,
เปเบฅเบฐ, B: เบเบทเปเบเบทเปเบเบเบฒเบ, C: เปเบ, D: เปเบกเปเบ,
dir_noslash, E: เบเบงเบฒเบกโเบเบดเบโเบเบฒเบโ, F: เปเบเบฅโเปโ,
เบเบฒเบเบเบฑเปเบเบเบญเบ,
filter_out,
filter_out_dirs,
เบเบญเบเบซเบฒเปเบเบฅเป,
find_first_upwards,
เปเบเบฃเปเบเบฃเบกเบเบญเบเบซเบฒ,
เบเบญเบเบซเบฒเบชเบฒเบ,
find_upwards,
first_available,
เบเปเบฒโเบเปเบฒโเบญเบดเบโ,
foreach, I: เบเปเบฒ,
เปเบเปเบเบดเบเปเบฅเปเบง,
infer_linker,
infer_objects,
เบเปเปเบกเบนเบ, J: เปเบเบปเปเบฒเบฎเปเบงเบก, M: เปเบฎเบฑเบ,
เปเบเบเบเบตเป,
เบเบนเปเบเบฐเบฅเบดเบ,
เปเบเบเบเบตเป,
"mktemp", N: notdir, O: only_generated,
only_nontargets,
only_phony_targets,
only_stale,
only_targets,
เบซเบผเบท,
เบเบปเปเบโเบเปเบฒโเปเบเบตเบโ, P: เบเปเบงเบโเปเบซเบผเบทเบญโ,
perl,
phony,
เบชเปเบฒเบโเบฅเปเบงเบโเบซเบเปเบฒโ,
เบเบดเบก, R: เปเบชเบฑเปเบเบเบฒเบเบเบตเปเปเบเปเบเบดเบ,
relative_filename,
relative_to, S: เบซเบญเบ,
เบเบฑเบเบฅเบฝเบ,
เบฅเบญเบ,
เบเปเบญเบ,
เบเปเปเบเปเบฒเบ, T: เบเบปเปเบงเบเบฒเบง, W: เบเบณ เปเบเบทเบญเบ,
เบเบปเบงเปเบเบ,
เบเปเบฒ,
เบเบฑเบโเบเบตโเบฅเบฒเบโเบเบทเปโเบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโ,
เบเปเบฒเบชเบฑเบเบเปเบฒเบ, X: xargs
เบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบญเบเบฎเบนเบเปเบเบ "$(name)", เบเปเบญเบเบเบตเป "เบเบทเป" เบเปเปเปเบกเปเบเบเบทเปเบเบญเบเบเบปเบงเปเบ, เบซเบผเบท
"$(name arg1 arg2 arg3)" เบเบทเบเบเบตเบเบงเบฒเบกเปเบฒเบเบงเปเบฒเปเบเบฑเบเบเบฒเบเปเบญเบตเปเบเบเบฑเบเบเบฑเบ. เบเบทเปเบญเบฒเบเบกเบตเบเบปเบงเบญเบฑเบเบชเบญเบ,
underscores, เบซเบผเบท hyphens; เปเบเบทเปเบญเบซเบผเบตเบเปเบงเบฑเปเบเบเบฒเบเบชเบฑเบเบชเบปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเป hyphens เบซเบผเบท underscores
เปเบฅเบเบเปเบฝเบเบเบฑเบเปเบเป, เปเบเบทเปเบญเบเบเบฒเบเบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฒเบเปเบเบเบทเบเบเปเบฝเบเปเบเบฑเบเบเบตเบเบเปเบญเบ. เบเบฒเบเบเบฐเปเบกเบตเบเบเบฑเปเบเบเปเบฒเบง
เบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบฝเบเปเบเปเปเบญเบตเปเบเปเบเปเปเบเบฑเบเบเบฐเบเบณเบเปเบญเบ Perl. เบเปเบฒ "เบเบทเป" เบเบทเบเบเปเบฒเบซเบเปเบฒเบเปเบงเบ "&" เบกเบฑเบเบเปเบฒเปเบเบตเบเบเบฒเบ
เบเปเบฒเบชเบฑเปเบ builtin เบซเบผเบท script เบเบญเบเบเบทเปเบเบฑเปเบเบเบฒเบเปเบเบเบฐเบเบงเบเบเบฒเบ makepp, เปเบฅเบฐเบชเบปเปเบเบเบทเบเบกเบฒเบเบเบฐเบเบฒเบ
เบเบปเบเบเบฐเบฅเบดเบ. เบเบตเปเบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบตเบเบฒเบเบชเปเบฒเบ perl เบชเปเบฒเบฅเบฑเบ PerlIO. เบเปเบฒเบเบทเปเบเปเปเบเบฑเปเบเบเบทเปเบเบฑเบเบเบฑเบ
เบกเบฑเบโเปเบเปโเบเบทเบโเบซเบฑเบโเปเบเบฑเบโเบเบฒเบโเบฎเบฝเบโเบฎเปเบญเบโเบเบญเบโเบเบฒเบโเปเบโ.
เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบปเบงเปเบเบเบตเปเบเปเบฒเบเปเบฅเบทเบญเบ "$(name ...)" เบซเบผเบท "${name ...}". เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบ
เบเบฑเบเบงเบปเบเปเบฅเบฑเบเบเบฝเบงเบเบฑเบ, เบกเบฑเบเบเปเบญเบเบเบทเบเบเบฑเบเบเบนเป, เบญเบฑเบเบญเบทเปเบเบเปเปเบชเปเบฒเบเบฑเบ: "$(เบเบทเป
...(){..." เบซเบผเบท "${name ...{}(...}".
เบเบฒเบเบชเบฐเปเบเบเบญเบญเบ.) double เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบฒเบเปเบเปเบเบฝเบเบเบตเปเบเบฐ span เบซเบผเบฒเบเปเบชเบฑเปเบ. เปเบเบงเปเปเปเปเบกเปเบ
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบทเบเบเบฐเบเบดเบเบฑเบเปเบเบฑเบเบเปเบญเบเบซเบงเปเบฒเบ, เบเบปเบเปเบงเบฑเปเบเบเบฒเบเบเบตเปเบ "เบเปเบฒเบเบปเบ". เบเบญเบเบเบฑเปเบเบเบฑเบเบกเบต syntax "$[name ...]"
เบซเบผเบท $[[name ...]], เปเบเบดเปเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบฐเปเบกเบตเบเปเบเบเบฐเบเบฐเบเบตเปเบญเปเบฒเบ makefile, เบเปเบญเบเบเบปเบเบฅเบฐเบเบฝเบ grokking
เปเบฅเบฐเบเบฒเบเบเปเปเบชเปเบฒเบเบญเบทเปเบเป.
Makepp เบกเบตเบซเบผเบฒเบเปเบเบฑเบเบเบฑเบ builtin เปเบเบดเปเบเบญเบฒเบเบเบฐเปเบเบฑเบเบเบฐเปเบซเบเบ. เบกเบฑเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเปเบเบทเบญเบเบเบฑเบเบซเบกเบปเบเบเบญเบ
GNU make's textual functions (เปเบเบดเปเบ GNU make's documentation for details), เปเบฅเบฐเบเบฒเบเบชเปเบงเบเบเบญเบเบกเบฑเบ
เบเบญเบเบเบปเบเปเบญเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบ Perl subroutines เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบ. เปเบเบดเปเบเบเปเบฒเบเบฐเปเบซเบผเบเบเบฒเบ "เบเปเบญเบ".
เปเบฅเบฐเบเบฒเบเบชเปเบงเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบฐเบซเบเบฒเบ makepp เบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบก.
เปเบเบทเปเบญเบเปเบ เบซเบเปเบฒเบเบตเป
เปเบฅเบฐ condition1[,condition2[,condition3...]]
เปเบฅเบฐเบเบฑเบเบเบฑเบเบชเบฐเบซเบเบญเบ "เบงเบปเบเบเบญเบเบชเบฑเปเบ" เปเบฅเบฐเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบ. เบเบฒเบเปเบเปเบเบฝเบเปเบเปเบฅเบฐเบเบปเบเปเบกเปเบ
เบเบฐเบซเบเบฒเบ, เปเบเบเปเบฒเบชเบฑเปเบ. เบเปเบฒเบญเบฒเบเบดเบงเปเบกเบฑเบเบเบฐเบซเบเบฒเบเปเบเปเบเบฑเบเบชเบฐเบเบฃเบดเบเบซเบงเปเบฒเบเปเบเบปเปเบฒ เบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเบฐเบขเบธเบ เปเบฅเบฐ
เบเบปเบเบเบญเบเบเบฒเบเบเบฐเบซเบเบฒเบเปเบกเปเบเบชเบฒเบเบเบตเปเบซเบงเปเบฒเบเปเบเบปเปเบฒ. เบเปเบฒเบเบฒเบเปเบเปเบเบฝเบเบเบฑเบเบซเบกเบปเบเบเบฐเบซเบเบฒเบเปเบเบชเบนเปเบเบฒเบเบเปเปเปเบเบฑเบ.
string เบซเบงเปเบฒเบเปเบเบปเปเบฒเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบเบฒเบเบเบฐเบซเบเบฒเบเปเบกเปเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบงเบเบญเบเบเบฒเบเปเบเปเบเบฝเบเบชเบธเบเบเปเบฒเบ.
if เบชเบฒเบ, result-if-string-not-blank[, result-if-string-blank]
iftrue เบชเบฒเบ, result-if-string-true[, result-if-string-false]
เบเบฒเบเปเบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบ "ifeq", เปเบฅเบฐเบญเบทเปเบเป, เบเปเบฒเบเบฐเปเบซเบผเบเบเบฒเบ. เบเปเบฒเบชเบฐเบเบฃเบดเบเบเปเปเบซเบงเปเบฒเบเปเบเบปเปเบฒ (ie, the
เปเบเบทเปเบญเบเปเบเปเบกเปเบเบเบงเบฒเบกเบเบดเบ), เบเบฒเบเปเบเปเบเบฝเบเบเบตเบชเบญเบ (เบเบฐเปเบซเบเบ "เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ") เบเบทเบเบชเบปเปเบเบเบทเบ (เบซเบผเบฑเบเบเบฒเบ
เบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบงเปเบ); เบเปเบฒเบชเบฐเบเบฃเบดเบเบซเบงเปเบฒเบเปเบเบปเปเบฒ, เบเบฒเบเปเบเปเบเบฝเบเบเบตเบชเบฒเบก (เบเปเป "เบญเบทเปเบ") เปเบกเปเบ
เบเบฑเบเบเบทเบเบกเบฒ.
เบเบปเบโเบเบปเบงโเบขเปเบฒเบ,
CFLAGS := $(เบเปเบฒ $(เบเบฒเบเบเบฑเปเบเบเบญเบ gcc egcc, $(CC)), -g -Wall, -g)
เบเบณเบเบปเบ CFLAGS เปเบเบฑเบ "-g -Wall" เบเปเบฒเบเบปเบงเปเบ CC เปเบกเปเบ "gcc" เบซเบผเบท "egcc", เปเบฅเบฐ "-g"
เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบ. (เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบเปเปเบชเปเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเปเบฎเบฑเบ.)
"iftrue" เปเบกเปเบเบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบ "เบเปเบฒ", เบเบปเบเปเบงเบฑเปเบเบงเปเบฒ string 0 เบเบทเบเบเบฐเบเบดเบเบฑเบเปเบเบฑเบเบซเบงเปเบฒเบเปเบเบปเปเบฒ.
or condition1[,condition2[,condition3...]]
เบซเบผเบทเบเบฑเบเบเบฑเบเบชเบฐเบซเบเบญเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบ OR "เบงเบปเบเบเบญเบเบชเบฑเปเบ". เปเบเปเบฅเบฐเบเบฒเบเปเบเปเบเบฝเบเปเบกเปเบเบเบฐเบซเบเบฒเบ,
เปเบเบเปเบฒเบชเบฑเปเบ. เบเปเบฒเบญเบฒเบเบดเบงเปเบกเบฑเบเบเบฐเบซเบเบฒเบเปเบเบชเบนเปเบชเบฐเบเบฃเบดเบเบเบตเปเบเปเปเบซเบงเปเบฒเบเปเบเบปเปเบฒ เบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบเบฐเบขเบธเบ เปเบฅเบฐ
เบเบปเบเบเบญเบเบเบฒเบเบเบฐเบซเบเบฒเบเปเบกเปเบเบชเบฒเบเบเบฑเปเบ. เบเปเบฒเบซเบฒเบเบงเปเบฒ, เบซเบผเบฑเบเบเบฒเบเบเบฒเบเปเบเปเบเบฝเบเบเบฑเบเบซเบกเบปเบเปเบเปเบเบทเบเบเบฐเบซเบเบฒเบ, เบเบฑเบเบซเบกเบปเบเบเบญเบ
เบเบงเบเปเบเบปเบฒเปเบกเปเบเบเปเปเบเบทเบเบเปเบญเบ (เบซเบงเปเบฒเบเปเบเบปเปเบฒ), เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบปเบเบเบญเบเบเบฒเบเบเบฐเบซเบเบฒเบเปเบกเปเบเบชเบฒเบเบเบตเปเบซเบงเปเบฒเบเปเบเบปเปเบฒ.
เปเบญเบเบฐเบชเบฒเบ เปเบฅเบฐ filename เบซเบเปเบฒเบเบตเป
absolute_filename เปเบ
abspath เปเบ
เบเปเบฝเบเบเบทเปเปเบเบฅเปเบเบตเปเบเปเบฝเบงเบเปเบญเบเปเบเบฑเบเบขเปเบฒเบเปเบเปเบเบดเบเปเบเบเบเปเปเบกเบต . or ..เบเบตเปเบขเบนเป เบเบปเบโเบเบปเบงโเบขเปเบฒเบ,
"$(absolute_filename xyz.c)" เบญเบฒเบเบเบฐเบชเบปเปเบเบเบทเบ "/usr/src/our_project/subdir/xyz.c".
absolute_filename_nolink เปเบ
เปเบชเบฑเปเบเบเบฒเบเบเบตเปเปเบเปเบเบดเบ เปเบ
เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบ absolute_filename, เปเบเปเบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบชเบฑเบเบเบฒเบฅเบฑเบเปเบเปเบเบทเบเปเบเปเปเบ.
เบเบทเปเบเบทเปเบเบเบฒเบ เบเบทเปเปเบเบฅเป
เบเบทเปเบเบทเปเบเบเบฒเบเปเบกเปเบเบเบทเปเปเบเบฅเปเบเบฑเบเบซเบกเบปเบ (เบเบฑเบเปเบเปเบฅเบเบฐเบเปเบฅเบต), เบฅเบปเบเบเปเปเบเบงเบฒเบกเบซเบผเบฑเบเบเบฒเบเปเบฅเบฐ
เบฅเบงเบกเบเบฑเบเปเบฅเบเบฐเปเบงเบฅเบฒเบชเบธเบเบเปเบฒเบ. เบเบปเบงเบขเปเบฒเบ, "$(basename myfile/version-1.0-module.c)" เปเบกเปเบ
"myfile/version-1.0-module"
dir เบเบทเปเปเบเบฅเป
เปเบเบเบชเปเบงเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบญเบเปเบเปเบฅเบฐเปเบเบฅเปเปเบเบฅเบฒเบเบเบทเปเปเบเบฅเป, เบฅเบงเบกเบเบฑเบเบเบฒเบเบเปเปเบเปเบฒเบ
เบเบฑเบ. เบเบญเบ "./" เบเปเบฒเบเปเปเบกเบตเปเบเปเบฃเบฑเบเบเปเบฃเบตเปเบเบเบทเปเปเบเบฅเป.
dir_noslash เบเบทเปโเปเบญโเบเบฐโเบชเบฒเบ
เบเบทเบเบฑเบเบเบฑเบ "$(dir )" เบเบปเบเปเบงเบฑเปเบเบงเปเบฒเบกเบฑเบเบเปเปเปเบเปเบชเบปเปเบเบเปเบฒเบซเบเปเปเปเปเบฒเบเบฒเบกเบซเบผเบฑเบ.
เปเบเบฅเปเบเปเบญเบ เบฎเบนเบเปเบเบ, เปเบเบ, เบเปเบฒเปเบงเบปเปเบฒ
เบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฝเบเบฎเบนเบเปเบเบเปเบเบเบทเปเปเบเบฅเป. เบเบตเปเปเบเบเบเปเบฒเบเบเบฒเบ pasubst เปเบเบเบฑเปเบ
เบกเบฑเบเบเบฐเบเบฐเบเบดเบเบฑเบเบขเปเบฒเบเบเบทเบเบเปเบญเบเปเบกเบทเปเบญเบเบทเปเบชเบฐเบซเบผเบฑเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบทเบเบกเบญเบเปเบซเป (เบเบฒเบเปเบเบเบตเป
เบเบงเบโเปเบเบปเบฒโเปเบเบปเปเบฒโเบเปเบญเบโเบซเบเปเบฒโเบญเบฑเบโเบเบฒโเบชเปเบงเบ). เบเบปเบโเบเบปเบงโเบขเปเบฒเบ,
$(filesubst ./src/%.c, %.o, $(wildcard src/*.c))
เบเบฐเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ filesubst เปเบเปเบเปเปเปเบกเปเบเบเบฑเบ pasubst.
filter_out_dirs เบเบทเปเปเบเบฅเป
เบชเบปเปเบเบเบทเบเบเบทเปเปเบเบฅเปเบเบฑเบเปเบปเบเบเบตเปเบเปเปเบญเปเบฒเบเบญเบตเบเปเบชเปเปเบเปเบฅเบเบฐเบเปเบฅเบต.
เบเบญเบเบซเบฒเปเบเบฅเป เบเบทเปโเปเบญโเบเบฐโเบชเบฒเบ, เปเบชเบฑเปเบเบเบฒเบ
เบเบญเบเบซเบฒเปเบเบฅเปเปเบเปเบชเบฑเปเบเบเบฒเบเบเบตเปเบฅเบฐเบเบธ, เบซเบผเบทเบขเบนเปเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบตเปเบเปเบฝเบเปเบเบเปเบเป PATH เบเปเบฒเบเปเปเบกเบตเบซเบเบฑเบเปเบเบฑเบ
เบฅเบฐเบเบธ. เบเบตเปเบชเบฒเบกเบฒเบเปเบเบฑเบเบเบฐเปเบซเบเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบญเบเบซเบฒเบเบฒเบเบชเบญเบเบซเบผเบทเบเบฐเบเบญเบเบกเบตเปเบเบฅเป. เบเบปเบโเบเบปเบงโเบขเปเบฒเบ,
TCL_INCLUDE := -I$(dir_noslash $(findfile tcl.h, \
/usr/local/stow/tcl-8.4.5-nothread/include \
/usr/include/tcl8.4 /usr/include/tcl \
/net/na1/tcl8.4a3/include /net/na1/tcl8.4a3/include))
เบญเบฑเบเบเบตเปเบเบญเบเบซเบฒเปเบเบฅเป tcl.h เปเบเบเบเบฒเบเบเบญเบเบซเบฒเบฅเบฒเบเบเบทเปเบเปเบฒเบเปเบเบดเบเบเบฑเบเปเบปเบ. เบขเปเบฒเบเปเบเปเบเบดเบ
เปเบชเบฑเปเบเบเบฒเบเปเบเบซเบฒเปเบเบฅเปเบเบทเบเบชเบปเปเบเบเบทเบ. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, "$(dir_noslash )" เบชเบฐเบเบฑเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฑเปเบ, เปเบฅเบฐเบกเบฑเบ
เบเบทเบเปเบชเปเปเบเบปเปเบฒเปเบเปเบเปเบชเบฑเปเบเบเบฒเบเบฅเบงเบก.
find_program เบเบทเป
เบเบฑเบเบเบทเบเปเบเบเบเบฒเบเบเปเบฒเบญเบดเบเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเบชเบฒเบกเบฒเบเบเบปเบเปเบซเบฑเบเบขเบนเปเปเบ PATH. เบเบตเปเปเบกเปเบเปเบเบฑเบเบเบฐเปเบซเบเบ
เปเบเปเบงเบฅเบฒเบเบตเปเบกเบตเบซเบผเบฒเบเปเบเบเบเบฒเบเบเบฝเบเปเบเบปเปเบฒเบเบตเปเบญเบฒเบเบเบฐเบเบทเบเบเปเบฒเปเบเป, เปเบฅเบฐเบเปเบฒเบเบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบ
เปเบฅเบทเบญเบเบซเบเบถเปเบเบเบญเบเบเบงเบเปเบเบปเบฒ. เบเบปเบงเบขเปเบฒเบ, เบเบตเปเปเบกเปเบเบเปเบฒเบเบดเบเบฒเบกเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเบซเบผเบฒเบเบเบปเปเบงเปเบ
เบเบปเบงเปเบเบเบตเป makepp เบชเบฐเบซเบเบญเบเบเปเบฒเบเปเบฒเบเบเปเปเปเบชเปเบซเบเบถเปเบเปเบ makefile เบเบญเบเบเปเบฒเบ:
CC = $(find_program gcc egcc pgcc c89 cc) # เปเบฅเบฐเบญเบทเปเบเปเบญเบตเบ, เบเบถเปเบเบเบฑเบเปเบเบทเปเบญเบ.
F77 = $(find_program f77 g77 fort77)
CXX = $(find_program g++ c++ pg++ cxx CC aCC)
เบเปเบฒเบเปเปเบกเบตเปเบเบฃเปเบเบฃเบกเปเบเบเบทเบเบเบปเบเปเบซเบฑเบ, "$(find_program)" เบเบฐเบชเบปเปเบเบเบทเบเบชเบฐเบเบฃเบดเบเบเบตเปเบเปเปเบเบปเบ, เปเบฅเบฐ.
เบเบฑเบเบเบถเบเบชเบดเปเบเบเบตเปเบเปเปเบเบปเบ. เบเบตเปเบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเบฐเบเปเปเบชเบปเปเบเบเบปเบเปเบซเป makefile เบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบ, เปเบเปเบกเบฑเบ
เบกเบตเปเบเบงเปเบเปเบกเบเบตเปเบเบฐเปเบฎเบฑเบเปเบซเปเบเปเปเบเบงเบฒเบกเบชเบฐเปเบเบเบเปเปเบเบดเบเบเบฒเบเบเบตเปเบเบตเบเบงเปเบฒ. เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเปเบฒเบเปเบฎเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบ:
เบเบตเป:
%.o : %.c
$(CC) $(inputs) -o $(outputs)
เปเบฅเบฐ makepp เบเปเปเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒ C compiler เปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเปเบฒเบเปเบเบดเบ, เบกเบฑเบเบเบฐเบเบปเบเปเบเบเบเบตเปเบเปเปเบเบปเบ.
เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบ shell เบเบฐเบเบฐเบเบฒเบเบฒเบกเบเบฐเบเบดเบเบฑเบเปเบเบฅเปเบเบปเปเบเบชเบฐเบเบฑเบเปเบฅเบฐเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบตเปเปเบเบตเบเบเบทเปเบ
เบเปเปเบเบงเบฒเบกเบญเบฒเบเบเบฐเปเบเบเปเบเปเป.
find_upwards เบเบทเปโเปเบญโเบเบฐโเบชเบฒเบ
เบเบปเปเบโเบซเบฒโเปเบเบฅโเปโเบเบญเบโเบเบทเปโเบเบตเปโเปเบเปโเบฎเบฑเบโเปเบโเบฅเบฐโเบเบปเบ .,.., ../ ..,../../.., เปเบฅเบฐเบญเบทเปเบเป,
เบเบปเบโเบโเปโเบงเบฒโเปเบเบฅโเปโเปเบเปโเบเบทเบโเบเบปเบโเปเบซเบฑเบโเบซเบผเบทโเบฅเบฐโเบเบปเบโเบฎเบฒเบโเปเบกเปเบโเปเบโเปเบเบดเบโเบซเบผเบทโเบฅเบฐโเบเบปเบโเบเบตเปโเบเบฑเปเบโเบขเบนเปโ
เปเบเบฅเบฐเบเบปเบเปเบเบฅเปเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ. (เบเปเปเบเปเบฒเบเบปเบเบชเบธเบเบเปเบฒเบเบเบตเปเปเบกเปเบเปเบเบทเปเบญเบเปเบญเบเบเบฑเบเบเบฑเบเบซเบฒเบเบฑเบ
automounters เบซเบผเบท hung network filesystems.) เบเปเบฒเปเบเบปเปเบฒเบกเบต a RootMakeppfile, เบเบฑเปเบเบเปเปเปเบกเปเบ
เบชเบดเปเบเบเบตเบเบเบงเบฒเบเบเบตเปเบเปเบญเบเบเบฑเบเบเบฒเบเบเบญเบเบซเบฒเบเบตเปเบชเบนเบเบเบถเปเบ.
เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเปเบฒเบเบกเบตเปเบเบเบเบฒเบเบเบตเปเบกเบตเบซเบผเบฒเบเบฅเบฐเบเบฑเบเบเบญเบ subdirectories, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป
เบฅเบงเบกเปเบญเบปเบฒเบเบดเปเบเบชเปเบงเบเบเบปเปเบงเปเบเบเบตเปเบขเบนเปเปเบเบเบฑเบเบซเบกเบปเบเบเบญเบ makefiles (เปเบเบฑเปเบ: เปเบเบเปเบเป "เบฅเบงเบก"
เบเบฐเปเบซเบผเบเบเบฒเบ):
TOP_LEVEL_INCLUDE_DIR := $(find_upwards เบฅเบงเบกเบกเบต)
# เบเบปเปเบเบซเบฒเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบเบฐเบเบญเบเบเปเบงเบ
# เบเบฐเบเบญเบเบกเบตเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบ.
%.o : %.c
$(CC) $(CFLAGS) -I$(TOP_LEVEL_INCLUDE_DIR) -c $(input) -o $(output)
เบเบฑเบเบซเบฒเบญเบตเบเบญเบฑเบเบซเบเบถเปเบเบเบตเป "find_upwards" เบชเบฒเบกเบฒเบเบเปเบงเบเปเบเปเปเบเปเบเปเปเบกเปเบเบเบฒเบเบเบญเบเบซเบฒเบฅเบฒเบเบเบทเปเบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบ
เบเบญเบเบเบฒเบเบเปเปเบชเปเบฒเบ. เปเบฅเบทเปเบญเบเปเบกเบฑเบเปเบเบฑเบเบเบฐเปเบซเบเบเบเบตเปเบเบฐเบเปเบฒเบเบปเบเบเบปเบงเปเบเปเบเบฑเปเบเบเบตเป:
เปเบเบดเบ :=../../..
เบเปเบฒเบเปเบฒเบเบกเบตเบเบฒเบเบเปเปเบกเบนเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบตเปเบเบฑเปเบเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบเปเบเบปเปเบฒเบเบฑเปเบ. เปเบเป
เบเบตเปเปเบกเปเบเบเบฒเบเบเบตเปเบเบฐเบฎเบฑเบเบชเบฒ, เปเบเบฒเบฐเบงเปเบฒเบเปเบฒเบเบงเบเบเบญเบ ".." เปเบกเปเบเปเบเบเบเปเบฒเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเบฅเบฐเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ
เบเบญเบเบเบปเปเบเปเบกเปเปเบเปเบฅเบเบฐเบเปเบฅเบต. เปเบเบเบเบตเปเบเบฐ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเป "find_upwards" เปเบเบทเปเบญเบเบญเบเบซเบฒเปเบเบฅเปเบเบตเปเปเบเบฑเบ
เปเบเบฑเบเบเบตเปเบฎเบนเปเบเบฑเบเบงเปเบฒเบกเบตเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบเปเบเบปเปเบฒเบเบฑเปเบ. เบเบปเบโเบเบปเบงโเบขเปเบฒเบ, เบงเปเบฒ
เปเบเบฅเป "เปเบเบญเบฐเบเบธเบเบฒเบ" เบเบฑเปเบเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบเปเบเบปเปเบฒเบเบฑเปเบ. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบชเบดเปเบเบเบตเป:
เปเบเบดเบ := $(dir_noslash $(find_upwards LICENSE))
"$(find_upwards LICENSE)" เบชเบปเปเบเบเบทเบเปเบชเบฑเปเบเบเบฒเบเปเบเบฑเบกเบเบญเบเปเบเบฅเปเปเบเบญเบฐเบเบธเบเบฒเบ;
"$(dir_noslash ...)" เบเบญเบเบเบทเปเปเบเบฅเปเบญเบญเบ, เบชเบปเปเบเบเบทเบเบเบฝเบเปเบเปเปเบเปเบฅเบเบฐเบเปเบฅเบต.
(เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒเบเปเบฒเบเบฐเปเบซเบผเบเบเบตเป "เบฅเบงเบก" เบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบญเบเบซเบฒเปเบเบฅเปเบเปเบฒเบเปเบเบดเบ, เบเบฑเปเบเบเบฑเปเบเบขเบนเปเบเบตเปเบเบฑเปเบ
เบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบฎเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป:
เบฅเบงเบกเปเบญเบปเบฒ $(find_upwards top_level_rules.mk)
เปเบเบเบเบตเปเบเบฐ, เบเปเบฒเบเบเบฝเบเปเบเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป
เบฅเบงเบกเปเบเบดเบ top_level_rules.mk
เปเบฅเบฐเบกเบฑเบเบเบฐเปเบฎเบฑเบเบงเบฝเบเปเบเบฑเปเบเบเบฝเบงเบเบฑเบ.)
เบเปเบฒเบเปเปเบเบปเบเปเบเบฅเป, "find_upwards" เบเบฐเบเบปเบเปเบฅเบตเบเบเบฒเบเบเปเปเบชเปเบฒเบเบเปเบงเบเบเปเปเบเบงเบฒเบกเบชเบฐเปเบเบเบเปเปเบเบดเบเบเบฒเบ.
เบเปเบฒเบเปเบฒเบเบฅเบฐเบเบธเบซเบผเบฒเบเบเบงเปเบฒเบซเบเบถเปเบเปเบเบฅเป, find_upwards เบเบฐเบเบปเปเบเบซเบฒเบญเบฑเบเบเปเบฒเบญเบดเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ
เบญเบฑเบเบเบตเบชเบญเบ, เปเบฅเบฐเบญเบทเปเบเป. เปเบเบเปเบฒเบชเบฑเบเบเปเบฒเบเปเบญเบทเปเบเป,
$(find_upwards file1 file2)
เปเบเบปเปเบฒเบเบฑเบ
$(find_upwards file1) $(find_upwards file2)
เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบญเบเบซเบฒเปเบเบฅเปเปเบเบเบถเปเบ, เปเบซเปเปเบเป "find_first_upwards" เปเบเบ.
find_first_upwards เปเบเปเบก 1 เปเบเปเบก 2 ...
เบเบฑเบเบเบฑเบเบเบตเปเบเบฐเบเบดเบเบฑเบเบเบทเบเบฑเบ "find_upwards" เบเบปเบเปเบงเบฑเปเบเบงเปเบฒเบกเบฑเบเบเบฐเบชเบปเปเบเบเบทเบเปเบเบฅเปเบเปเบฒเบญเบดเบเบเบญเบเปเบเป
เปเบเบฅเปเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเบกเบฑเบเบเบปเบ. เปเบเบเบชเบฐเปเบเบฒเบฐ, เบกเบฑเบเบเบงเบเปเบเบดเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฐเบเบธเบเบฑเบเบชเปเบฒเบฅเบฑเบ
เปเบเบฅเปเปเบเบเบถเปเบเปเบเบฅเบฒเบเบเบทเป, เปเบฅเบฐเบชเบปเปเบเบเบทเบเปเบเบฅเปเบเปเบฒเบญเบดเบเบเบตเปเบกเบตเบขเบนเป เบซเบผเบทเบชเบฒเบกเบฒเบเบชเปเบฒเบเปเบเป.
เบเปเบฒเบเปเปเบกเบตเปเบเบฅเปเปเบเปเบซเบผเบทเบชเบฒเบกเบฒเบเบชเปเบฒเบเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฑเปเบ, เบกเบฑเบเบเบฐเบเบงเบเปเบเบดเปเบ .., เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ
../ .., เปเบฅเบฐเบญเบทเปเบเป, เบเบปเบเบเปเบงเบฒเบกเบฑเบเปเบเบฎเบญเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบฎเบฒเบเบซเบผเบทเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเปเบเบฑเบ
เบเบฑเปเบเบขเบนเปเปเบเบฅเบฐเบเบปเบเปเบเบฅเปเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ.
first_available เปเบเปเบก 1 เปเบเปเบก 2 ...
เบชเบปเปเบเบเบทเบเปเบเบฅเปเบเปเบฒเบญเบดเบเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเบกเบตเบขเบนเปเบซเบผเบทเบชเบฒเบกเบฒเบเบชเปเบฒเบเปเบเป. เบเบตเปเบชเบฒเบกเบฒเบเปเบเบฑเบเบเบฐเปเบซเบเบเบชเปเบฒเบฅเบฑเบ
เบเบฑเบ makefiles เบเบญเบเบเปเบฒเบเปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเปเบเบทเปเบญเบเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบซเบผเบฒเบเบซเบผเบทเปเบเบทเบญเบเปเบฒเบ, เบเปเบญเบเบเบตเป
เปเบเบฅเปเบเบตเปเบชเปเบฒเบเบฑเบเบญเบฒเบเบเบฐเบขเบนเปเปเบเบชเบฐเบเบฒเบเบเบตเปเบเปเบฒเบเป. เบเบปเบงเบขเปเบฒเบ, เบเบตเปเปเบกเปเบเปเบชเบฑเปเบเบเบฒเบ
เบซเบเบถเปเบเปเบ makefiles เบเบญเบเบเปเบญเบ:
TCL_LIB = $(first_available \
/usr/local/stow/tcl-8.4.5-nothread/lib/libtcl8.4.so \
/usr/lib/libtcl8.4.so /usr/lib/libtcl.so \
/net/na1/tcl8.4a3/lib/libtcl8.4.a \
/net/na1/tcl8.4a3/lib/libtcl8.4.sl)
เปเบชเบฑเปเบเบเบตเปเบเบฐเบเบงเบเปเบเบดเปเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ Tcl เปเบเบชเบฐเบเบฒเบเบเบตเปเบเปเบฒเบเปเบเบดเบ, เบขเบธเบเบขเบนเปเบเบตเป
เบญเบฑเบเบเปเบฒเบญเบดเบเบเบตเปเบกเบฑเบเบเบปเบ. เบเปเบฒเบชเบฑเปเบเปเบเบทเปเบญเบกเบเปเปเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฐเบเบญเบเบกเบต $(TCL_LIB) เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบ
เบซเปเบญเบเบชเบฐเบซเบกเบธเบ Tcl เบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบก.
infer_linker เปเบเปเบก 1 เปเบเปเบก 2 ...
เปเบซเปเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเปเบเบฅเปเบงเบฑเบเบเบธเบเปเบฒเบญเบดเบเบชเปเบฒเบเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒเบเปเบฒเบซเบฒเบเบงเปเบฒเบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเบเบฑเบเบเปเปเบเบฑเบเปเบเป. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบญเบเบซเบฒ
เบเปเปเบงเปเบฒเบเบฐเบเบถเปเบเบเบฑเบ Fortran, C ++ เบซเบผเบทเปเบซเบผเปเบ C เปเบฅเบฐเบชเบปเปเบเบเบทเบเบเปเปเบกเบนเบเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบ
compiler (เปเบเบดเปเบเบเบตเบเบงเปเบฒเบฎเบนเปเบงเบดเบเบตเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเปเบงเบฒ "ld").
infer_objects เปเบเปเบก 1 เปเบเปเบก 2 ..., เบฎเบนเบเปเบเบ
$(infer_objects object1.o object2.o, *.o)
เบเปเบฒเบเปเบฒเบเปเบเปเบชเบปเบเบเบดเบชเบฑเบเบเบฒเบกเบฒเบเบเบฐเบเบฒเบเบเปเบฝเบงเบเบฑเบเบเบทเปเปเบเบฅเป header, makepp เบกเบตเบเบงเบฒเบกเบชเบฒเบกเบฒเบ
เบเบฒเบเบเบฒเบเปเบเบปเบฒเบงเปเบฒเปเบเบฅเป ".o" เบซเบผเบท ".lo" เบเปเบญเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบเบฑเบเปเบเบผเปเบเบผเบกเบเบญเบเบเปเบฒเบ. เบเปเบญเบเปเบเปเบชเบดเปเบเบเบตเปเปเบเบทเปเบญ
เปเบฅเบทเบญเบเปเบเบฅเปเบเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบกเบตเปเบกเบเบนเบเบเบตเปเปเบเปเปเบเบซเบผเบฒเบเบญเบฑเบ
เปเบเบเบเบฒเบ. เปเบเบเบเบตเปเบเบฐเปเบฎเบฑเบเปเบซเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบ ".a" เปเบเบฅเปเปเบฅเบฐเบกเบตเบเบปเบงเปเบเบทเปเบญเบกเบเปเปเปเบฅเบทเบญเบเปเบญเบปเบฒเบญเบญเบ
เปเบกเบเบนเบเบเบตเปเบเปเบฝเบงเบเปเบญเบ, makepp เบชเบฒเบกเบฒเบเปเบฅเบทเบญเบเปเบญเบปเบฒเปเบกเบเบนเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบชเปเบฒเบฅเบฑเบเบเปเบฒเบ. เบเปเบงเบเบงเบดเบเบตเบเบตเป, เปเบเบปเปเบฒเบเบฑเปเบ
เปเบกเบเบนเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบฅเบงเบเบฅเบงเบก.
เบชเบนเบเบเบฒเบเบเบดเบเปเบฅเปเบเบญเบ Makepp เบชเปเบฒเบฅเบฑเบ inferring object dependencies เปเบกเปเบเบเบถเปเบเบเบฑเบเบชเบปเบเบเบดเบชเบฑเบเบเบฒเบงเปเบฒ
เบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบญเบโเบเบธเบโเบเบฑเปเบโเบฎเบฝเบโเบซเบผเบทโเบซเบเปเบฒโเบเบตเปโเบเปเบฒโเบเบปเบโเปเบงเปโเปเบโเปเบเบฅโเปโเบซเบปเบง "xyz.hโ" เปเบกเปเบโ
เบฅเบงเบเบฅเบงเบกเปเบเบปเปเบฒเปเบเปเบเปเบเบฅเปเบงเบฑเบเบเบธเบเบตเปเปเบญเบตเปเบเบงเปเบฒ "xyz.o" (เบซเบผเบท "xyz.lo"). เบเบฑเปเบเบเบฑเปเบ algorithm เบเบญเบ makepp เบชเปเบฒเบฅเบฑเบ
inferring object dependencies เปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเบงเบฑเบเบเบธเบญเบฑเบเปเบถเปเบ เบซเบผเบทเบชเบญเบเบชเบฒเบกเบญเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบฎเบนเปเบงเปเบฒเบเปเบญเบเบกเบต
เปเบเบทเปเบญเบกโเบเปเปโเบเบฑเบโเปเบเบโเบเบฒเบโ. เบกเบฑเบเปเบเบดเปเบเบงเปเบฒเปเบเบฅเปเปเบเปเบเปเบเบทเบเบฅเบงเบกเปเบเบปเปเบฒเบเบฑเบ "#include" เปเบ
เปเบซเบผเปเบเบเปเปเบกเบนเบเปเบซเบผเบปเปเบฒเบเบฑเปเบ, เปเบฅเบฐเบเบฐเบเบฒเบเบฒเบกเบเบญเบเบซเบฒเปเบเบฅเปเบงเบฑเบเบเบธเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบเบฐเบเบญเบเบกเบต
เปเบเบฅเป.
"$(infer_objects )" เบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเปเบฒเบงเปเบเบดเบเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเบเบญเบเปเบเบเบเบฒเบ, เปเบเบฑเปเบ
เบเบตเป:
myprog: $(infer_objects main.o another_object.o, \
**/*.o /other/library/dirs/**/*.o)
$(CXX) $(inputs) -o $(output) $(LIBS)
เบเบฑเบเบเบฑเบ "$(infer_objects)" เปเบเปเบชเบญเบเบญเบฒเบเบดเบงเปเบกเบฑเบ (เบเบฑเปเบเบเปเบงเบเปเบเบทเปเบญเบเปเบฒเบเบเบธเบ, เบเบฑเปเบเบเบตเปเบชเบฐเปเบเบ).
เบเปเบฒเบญเบดเบเปเบกเปเบเปเบเบฅเปเบงเบฑเบเบเบธเบซเบเบถเปเบเบซเบผเบทเบเปเบฒเบเบงเบเบซเบเปเบญเบเบเบตเปเบฎเบนเปเบงเปเบฒเบเปเบญเบเบเบฒเบ (เบเบปเบงเปเบเบเปเบกเปเบ
เบญเบฐเบเบธเบเบฒเบเบขเบนเปเบเบตเปเบเบตเป). เบญเบฑเบเบเบตเบชเบญเบเปเบกเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบงเบฑเบเบเบธเบเบตเปเปเบเบฑเบเปเบเปเบเป (เบเบปเบเบเบฐเบเบดเบเปเบฒเบเบเบฐเปเบเป a
wildcard here) เบเบตเปเบชเบฒเบกเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบเปเบเปเบฒเบเปเบฒเปเบเบฑเบ. เบกเบนเบเบเปเบฒเบเบฑเบเบเบทเบเบเบฒเบเบเบตเป
function เปเบกเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเบเบฐเบเบญเบเบเปเบงเบเบงเบฑเบเบเบธเบเปเบฒเบญเบดเบเบเบฑเบเบซเบกเบปเบเปเบ argument เบเปเบฒเบญเบดเบ, เปเบฅเบฐ
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบงเบฑเบเบเบธเปเบเบตเปเบกเปเบเบตเบกเบเบฑเบเบซเบกเบปเบเบเบตเปเบเบฑเบเบเบธเบขเบนเปเปเบเบเบฒเบเปเบเปเบเบฝเบเบเบตเบชเบญเบ
เบเบตเปเบเปเบญเบเบเบฒเบเปเบเบเบงเบฑเบเบเบธเปเบเบเบฒเบเปเบเปเบเบฝเบเบเปเบฒเบญเบดเบ.
เบเบปเบงเบขเปเบฒเบ, เบชเบปเบกเบกเบธเบเบงเปเบฒ "main.o" เบกเบฒเบเบฒเบ "main.cpp", เปเบเบดเปเบเบเบฐเบเบญเบเบกเบต "my_class.h".
"$(infer_objects)" เบเบญเบเบซเบฒเปเบเบฅเปเบเบตเปเบกเบตเบเบทเป "my_class.o". เบเปเบฒเปเบเปเบซเบเบถเปเบเปเบเบฑเปเบ
เปเบเบฅเปเบเบทเบเบเบปเบเปเบซเบฑเบ, เบกเบฑเบเบเบทเบเปเบเบตเปเบกเปเบเบปเปเบฒเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป. (เบเปเบฒเบเบปเบเบชเบญเบเปเบเบฅเปเบงเบฑเบเบเบธ "my_class.o" เบเบทเบเบเบปเบเปเบซเบฑเบ
เปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เบเปเปเบเบงเบฒเบกเปเบเบทเบญเบเบเบฐเบเบทเบเบเบดเบกเบญเบญเบ.) "infer_objects" เบเบฑเบ
เบเบงเบเปเบเบดเปเบ "my_class.cpp" เปเบเบทเปเบญเปเบเบดเปเบเบงเปเบฒเบกเบฑเบเบเบฐเบเบญเบเบกเบตเบซเบเบฑเบเปเบเป, เปเบฅเบฐเปเบเบฅเปเบงเบฑเบเบเบธเปเบเบตเปเบกเปเบเบตเบกเปเบกเปเบเบซเบเบฑเบ
เบเบปเปเบเบเบญเบ.
mktemp
mktemp เบเบณ เบเบณ เปเปเบฒ
mktemp เบเบณ เบเบณ เปเปเบฒXXX
mktemp /
เบชเบปเปเบเบเบทเบเบเบทเปเปเบเบฅเปเบเบปเปเบงเบเบฒเบงเบเบตเปเบเปเปเบชเบฒเบกเบฒเบเบเบฒเบเปเบเบปเบฒเปเบเป, เปเบเบดเปเบเบเปเปเบกเบตเบขเบนเปเปเบเบเบฑเบเบเบธเบเบฑเบ. เบเปเปโเบกเบตโเบเบทเป
เบเบฒเบเบเบตเปเปเบเบซเบฒเปเบเบฅเปเบเบฝเบงเบเบฑเบเบเบทเบเบชเบปเปเบเบเบทเบเบชเบญเบเบเบฑเปเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบกเบตเปเบชเบฑเปเบเบเบฒเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ,
เบเบฒเบโเปเบโเบเบฒเบโเบเปเบฒโเปเบเบตเบโเบเบฒเบ makepp (เบเบปเบโเปเบงเบฑเปเบโเบเบฒเบโเบขเปเบฒเบโเบเบตเปโเปเบเบฑเบโเปเบโเปเบเปโเบเบฑเบ recursive เปเบฎเบฑเบโเปเบซเปโเบเบทเปเบโเปเบกเบทเบญเบโ, เบซเบผเบทโเบเปเบฒโเบซเบฒเบโเบงเปเบฒ Perlโ
เบฅเบฐโเบซเบฑเบโเบเบตเปโเปเบฅเปเบโเบขเบนเปโเบเบฒเบโเปเบโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบปเบโเบฅเบฐโเบเบฝเบโเปเบญเบตเปเบโเบงเปเบฒ "f_mktempโ"โ)โ. เปเบเบเบญเบเบเปเบฒเบเบเบญเบ makepp เบเปเบฒเปเบเบตเบเบเบฒเบเบเบฑเบเบซเบกเบปเบ
เปเบเบฅโเปโเบเบตเปโเบชเบปเปเบโเบเบทเบโเปเบเบโเบเบฒเบโเบเปเบฒโเบเบฒเบโเบเบตเปโเบเบฐโเบเบทเบโเบฅเบปเบโ, เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเบงเบโเปเบเบปเบฒโเปเบเบปเปเบฒโเบกเบต (เบญเบตเบโเปเบเบทเปเบญโเบซเบเบถเปเบโเบเบปเบโเปเบงเบฑเปเบโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเปเบซเบผเบปเปเบฒโเบเบตเปโ
เบชเบปเปเบเบเบทเบเปเบเบเบเบฑเบเบเบฑเบเบเบตเปเปเบเบฅเบฐเบซเบฑเบ Perl เบเบตเปเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบเบปเบเบฅเบฐเบเบฝเบ).
เบเบปเบงเปเบฅเบเบเบญเบเบเบปเบงเบเบดเบกเปเบซเบเป "X" เปเบเบเบญเบเบเปเบฒเบเบเบญเบเบเบฒเบเปเบเปเบเบฝเบเบเบฐเบเบทเบเปเบเบเบเบตเปเบเปเบงเบเบเปเบฒเบเบงเบเบซเบผเบฒเบเบเบฑเปเบ
เบเบปเบงเบญเบฑเบเบชเบญเบเปเบฅเบฐเบเบปเบงเปเบฅเบเปเบเบเบชเบธเปเบก. เบซเบผเบฒเบเบกเบต, เบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเปเบซเบเปเบญเบเบเบตเปเบเบฐ collide
เบเบฑเบเบเบฐเบเบงเบเบเบฒเบเบญเบทเปเบเป, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเปเบฒเบเปเบซเปเบเปเบฒเบเปเบฒเบซเบเปเบฒเปเบเบฑเปเบ "/tmp/abc.", เบเปเบฒเบเบเบงเบเบกเบตเบเบฝเบเบเป
"X"s. เบเปเบฒเบกเบตเบซเบผเบฒเบเบเบงเปเบฒเบซเบเบถเปเบ X, เบเบปเบงเบญเบฑเบเบชเบญเบเบเปเบฒเบญเบดเบเบกเบฒเบเบฒเบ id เบเบฐเบเบงเบเบเบฒเบ. เบเปเบฒ
เบเปเปเบกเบต, เบกเบฑเบเบเบทเบเบฑเบเบงเปเบฒเบกเบตเบชเบดเบ, เปเบเบดเปเบเบชเบปเบกเบกเบธเบเบงเปเบฒเบเบฝเบเบเป (8.4e17.
เบเบงเบฒเบกเปเบเบฑเบเปเบเปเบเปเบซเบผเบท 3.7e15 เปเบ Windows). เบเปเบฒเบเปเปเบกเบตเบเบฒเบเปเบเปเบเบฝเบ, เบเปเบฒเบเปเบฒเบซเบเปเบฒเบเบฐเปเบฅเบตเปเบกเบเบปเปเบเปเบเบฑเบ
"tmp." เปเบโเบฅเบฐโเบเบปเบโเบเบฐโเบเบธโเบเบฑเบโ.
เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒเบเปเบฒเบเบเปเปเบเปเบญเบเบเบฒเบเปเบซเปเบเบทเปเบเบฑเปเบเบเปเบฒเบงเปเบเบฑเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบปเบเบฅเบฐเบเบฝเบเปเบฅเบฐเบเบฒเบเบเบถเปเบเบเบฑเบ. เปเบเป
เบเบปเบเปเบเปเบฎเบฑเบเบเบฐเบเบทเบเบเปเบญเบ, เปเบเปเบกเบฑเบเบเบฐเบเบทเบเบชเปเบฒเบเบเบทเบเปเบซเบกเปเบเบธเบเบเบฑเปเบเบเบตเปเบเปเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบ makepp.
เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเปเบญเบเบงเปเบฒเบกเบฑเบเปเบเบเบเปเบฒเบเบเบฑเบเบชเบฐเปเบซเบกเบต, เบเปเบฒเบเบเบงเบเปเบเปเบเบตเปเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฝเบเปเบเปเบเปเบฒเบเปเบฒเบเปเบเป
":build_check ignore_action":
TMPFILE ;= $(mktemp) # 1 เปเบ; "=" เบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒ 3 เปเบ: 3 เปเบเบฅเป
A-count B-count: :build_check ignore_action
produce-As-and-Bs >$(TMPFILE)
&grep -c /A/ $(TMPFILE) -o A-count
&grep -c /B/ $(TMPFILE) -o B-count
เบซเบผเบทเบเปเบฒเบเบเบงเบเบชเบปเปเบเบญเบญเบเบกเบฑเบเปเบฅเบฐเปเบซเป Shell เบเบฐเปเบกเบตเบเบกเบฑเบ:
เบชเบปเปเบเบญเบญเบ TMPFILE ;= $(mktemp)
A-count B-เบเบฑเบ:
produce-As-and-Bs >$$TMPFILE # makepp เบเปเปเปเบซเบฑเบเบเปเบฒ var
fgrep -c A $$TMPFILE >A-count
fgrep -c B $$TMPFILE >B-count
เปเบเบเบเบญเบกเบชเบธเบเบเปเบฒเบเปเบฎเบฑเบเปเบฅเบทเปเบกเบเบทเบเบเปเบฒเบเบฑเบเบเบทเบเบเบตเปเบเปเบฒเบเบกเบฒ, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบกเบฑเบเปเบเบเบปเบเบฅเบฐเบเบฝเบเบฎเบนเบเปเบเบ:
%.x: %.y
&grep foo $(input) -o $(mktemp)
&sed bar $(mktemp /) -o $(output) # เบเบฐเบเบดเบเบฑเบเบเบฒเบเบญเบญเบเบเบญเบ &grep
notdir เบเบทเปเปเบเบฅเป
เบชเบปเปเบเบเบทเบเบชเปเบงเบเบเบตเปเบเปเปเปเบกเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบญเบเบเบทเปเปเบเบฅเป, เปเบเบฑเปเบ, เบเบธเบเบขเปเบฒเบเบซเบผเบฑเบเบเบฒเบเบญเบฑเบเบชเบธเบเบเปเบฒเบ
slash เบเปเบฒเบกเบตเบซเบเบถเปเบ, เบซเบผเบทเบเบทเปเปเบเบฅเปเบเบฑเบเบซเบกเบปเบเบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบ.
only_generated เบเบทเปเปเบเบฅเป
เบชเบปเปเบเบเบทเบเบเบฝเบเปเบเปเบเบทเปเปเบเบฅเปเปเบซเบผเบปเปเบฒเบเบฑเปเบเปเบเบฅเบฒเบเบเบทเปเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบเบ makepp เปเบฅเบฐเบเปเปเปเบกเปเบเบเบฑเปเบเปเบเปเบเบฑเปเบเบกเบฒ
เบเบฑเบเปเบเป, เบญเบตเบเบเบฒเบกเปเบเบฅเปเบเปเปเบกเบนเบเบเบฒเบเบเปเปเบชเปเบฒเบ.
เบซเบเปเบฒเบเบตเปเบเบตเปเปเบกเปเบเปเบเบฑเบเบเบฐเปเบซเบเบเปเบเบเบปเบเบฅเบฐเบเบฝเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบชเบฐเบญเบฒเบ (เปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเปเบเบญเบ "makeppclean" เปเบกเปเบ
เบเบปเบงเปเบเบเบตเปเบกเบฑเบ):
$(เบฅเปเบฒเบโเบเบดเบโเบเบฒเบ):
&rm -f $( only_generated **/*)
only_nontargets เบเบทเปเปเบเบฅเป
เบชเบปเปเบเบเบทเบเบเบฝเบเปเบเปเบเบทเปเปเบเบฅเปเปเบซเบผเบปเปเบฒเบเบฑเปเบเบขเบนเปเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเบเปเปเปเบกเปเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเปเบเป (เบเปเปเบงเปเบฒเบเบฐ
เบเบปเบโเบฅเบฐโเบเบฝเบโเบขเปเบฒเบโเบเบฑเบโเปเบเบโเบซเบผเบทโเบฎเบนเบโเปเบเบโ)โ. เปเบเบปเปเบฒเบญเบฒเบเบเบฐเบฅเบฐเบเบธเบเบปเบงเปเบเบ (เปเบเบดเปเบ "$(wildcard)"
เบเบฑเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบเบเบปเบงเปเบเบเบเบญเบ makepp). เบเบตเปเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบ a
เปเบเบปเปเบฒเปเบฒเบเบเบฒเบเปเบเบเบขเบฒเบ, เบเบปเบงเบขเปเบฒเบ:
.PHONY: เบเบฒเบเปเบเบเบขเบฒเบ
เบเบฒเบเปเบเบเบขเบฒเบ:
&mkdir our_product-$(VERSION)
&cp $(filter-out %~, $(only_nontargets *)) our_product-$(VERSION)
tar cf - our_product-$(VERSION) | gzip -9c > our_product-$(VERSION).tar.gz
เปเบเบเปเบฅเบฐเบเบตเบเบตเป, "$(only_nontargets *)" เบชเบปเปเบเบเบทเบเบเบธเบเปเบเบฅเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฐเบเบธเบเบฑเบ
เบเบฑเปเบเบเปเปเปเบกเปเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบขเปเบฒเบ. "$(filter_out %~, ...)" เปเบญเบปเบฒเบเบปเบงเปเบเปเปเบเบญเบญเบ
เบชเบณ เบฎเบญเบ.
เบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบ "only_targets" (เปเบเบดเปเบเบเปเบฒเบเปเบเบดเบ), "only_nontargets" เบเบฝเบเปเบเปเบฎเบนเปเบเปเบฝเบงเบเบฑเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเป
เปเบเปเบเบทเบเบเปเบฒเบเบปเบเปเบงเปเปเบฅเปเบง. เบเบตเปเปเบกเปเบเบเบฑเบเบซเบฒเบเบฝเบเปเบเปเบเปเบฒเบเปเบฒเบเปเบเปเบกเบฑเบเปเบเบทเปเบญเบเปเบฒเบเบปเบเบเบปเบงเปเบ
เบเปเบงเบเบเบฒเบเบกเบญเบเปเบฒเบ ":="; เบเปเบฒเปเบเบปเปเบฒเปเบเปเบกเบฑเบเบขเบนเปเปเบเบฅเบฒเบเบเบทเปเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบช เบซเบผเบทเบขเบนเปเปเบเบเบปเบงเบเบญเบ a
เบเบปเบโเบฅเบฐโเบเบฝเบโ, เบเบปเบโเบฅเบฐโเบเบฝเบโเบญเบทเปเบเปโเบเบฑเบโเบซเบกเบปเบโเบเบฐโเปเบเปโเบฎเบฑเบโเบเบฒเบโเปเบซเบฑเบโเปเบฅเปเบงโ.
only_stale เบเบทเปเปเบเบฅเป
เบชเบปเปเบเบเบทเบเบเบฝเบเปเบเปเบเบทเปเปเบเบฅเปเปเบซเบผเบปเปเบฒเบเบฑเปเบเปเบเบฅเบฒเบเบเบทเปเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบเบ makepp เปเบฅเบฐเบเปเปเปเบกเปเบเบเบฑเปเบเปเบเปเบเบฑเปเบเบกเบฒ
เบเบฑเบเปเบเป, เบญเบตเบเบเบฒเบกเปเบเบฅเปเบเปเปเบกเบนเบเบเบฒเบเบเปเปเบชเปเบฒเบ, เปเบเปเบเปเปเปเบกเปเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเปเบเป.
เบเบฑเบเบเบฑเบเบเบตเปเปเบกเปเบเปเบเบฑเบเบเบฐเปเบซเบเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒเบเปเปเบกเบตเบเบฒเบเบเบถเปเบเบเบฑเบเปเบเบฅเปเบเบฑเปเบเบเปเบฒเบง,
เปเบเบเบเปเปเบกเบตเบเบฒเบเบเบฑเบเบเบฑเบเปเบซเปเบกเบตเบเบฒเบเบเปเปเบชเปเบฒเบเบชเบฐเบญเบฒเบเบเบญเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบฑเบเบซเบกเบปเบ:
$(phony flush):
&rm -f $(only_stale **/*)
เบเบปเบงเบเบดเบเปเบฅเปเบง, เบกเบฑเบเบญเบฒเบเบเบฐเบเบตเบเบงเปเบฒเบเบตเปเบเบฐเบเบฝเบเบชเบฐเบเบดเบเบเบตเปเปเบเบซเบฒ makepp เปเบเบทเปเบญเบชเปเบฒเบ
เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเปเบเบฅเป stale, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบตเบชเบฐเบเบดเบเบเบตเปเปเบญเบปเบฒเบเบฑเบเบซเบกเบปเบเบเบญเบเปเบเบฅเปเบเบตเปเบฅเบฐเบเบธเปเบงเปเบงเปเบฒ
เปเบเบเบฑเบเบเบธเบเบฑเบเบเปเปเปเบเปเบขเบนเปเบเบฒเบเปเบเปเบเบฒเบเบเบงเบเบเบธเบกเปเบซเบผเปเบ, เบเบฝเบเปเบเปเปเบเบเปเบฅเบฐเบเบตเบเบตเปเปเบเบฅเปเบเบตเปเบชเปเบฒเบเบเบถเปเบเบเบฒเบเปเบเบฑเบเปเบซเบผเปเบ
เปเบเบฅเป. Makepp เบเปเปเบกเบตเบซเบเปเบฒเบเบตเปเบเบฑเปเบเบเปเบฒเบงเบชเปเบฒเบเบเบถเปเบเปเบเปเบเบฒเบฐเบงเปเบฒ makepp เปเบกเปเบ (เปเบฅเบฐเบญเบฒเบเบเบฐเปเบเบฑเบ
เบเบงเบเบเบฐเบเบฑเบเบเบปเบเบขเบนเป) agnostic เบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบงเบเบเบธเบกเปเบซเบผเปเบ.
only_targets เบเบทเปเปเบเบฅเป
เบชเบปเปเบเบเบทเบเบเบฝเบเปเบเปเบเบทเปเปเบเบฅเปเปเบซเบผเบปเปเบฒเบเบฑเปเบเบขเบนเปเปเบเบฅเบฒเบเบเบทเปเบเบตเปเปเบเบฑเบเปเบเบปเปเบฒเปเบฒเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบขเปเบฒเบ
(เบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบเบฐเปเบเปเบ เบซเบผเบทเบฎเบนเบเปเบเบ). เปเบเบปเปเบฒเบญเบฒเบเบเบฐเบฅเบฐเบเบธเบเบปเบงเปเบเบ (เบฅเบงเบกเบเบฑเบ makepp's
เบเบปเบงเบญเบฑเบเบชเบญเบเบเบดเปเบชเบ, "**") เปเบเบเบทเปเปเบเบฅเป. (เปเบเบดเปเบเบซเบเปเบฒเบเบตเป "$(wildcard )" เบชเปเบฒเบฅเบฑเบเบเปเปเบกเบนเบเปเบเบตเปเบกเปเบเบตเบก
เบฅเบฒเบเบฅเบฐเบญเบฝเบ. เบเบตเปเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเบชเปเบฒเบฅเบฑเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบชเบฐเบญเบฒเบ, เบเบปเบงเบขเปเบฒเบ:
.PHONY: เบชเบฐเบญเบฒเบ
เบชเบฐเบญเบฒเบ:
&rm -f $(only_targets *)
เบเบญเบเบเบตเปเบเปเบฒเบเปเบฒเบเบเบดเบก "makepp clean", เบกเบฑเบเบเบฐเบฅเบถเบเบเบธเบเบชเบดเปเบเบเบตเปเบกเบฑเบเบฎเบนเปเบงเบดเบเบตเบเบฒเบเบชเปเบฒเบ. เปเบเป
เบขเปเบฒเบชเปเบฒเบเปเบเบปเปเบฒเปเบฒเบเบเบตเปเบชเบฐเบญเบฒเบ, เปเบเป "makeppclean" เปเบเบ!
เบชเบฐเบเบฒเบเบเบตเปเบญเบทเปเบเบเบตเปเบกเบฑเบเบญเบฒเบเบเบฐเปเบเบฑเบเบเบฐเปเบซเบเบเปเบกเปเบเปเบเบทเปเบญเบซเบผเบตเบเปเบงเบฑเปเบเบเบฒเบเบฅเบงเบกเบเบฑเบ stale .o เปเบเบฅโเปโเปเบโเบเบญเบโเบเปเบฒเบโ
เบชเปเบฒเบ. เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเปเบเบปเปเบฒเบชเปเบฒเบเบซเปเบญเบเบชเบฐเปเบธเบเปเบเบเบเบตเป:
mylib.a: *.o
&rm -f $(เบเบปเบเบเบฐเบฅเบดเบ)
$(AR) cr $(output) $(inputs)
เปเบฅเบฐโเบซเบผเบฑเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒเบโเบฅเบถเบโเบเบฒเบโเปเบเบฅโเปโเปเบซเบผเปเบโเปเบเปโเบฅเบทเบกโเบเบตเปโเบเบฐโเบฅเบปเบโเบเบตเปโเบชเบญเบโเบเปเบญเบโเบเบฑเบโ .o เปเบเปเบก,
เปเบเป .o เปเบเบฅเปเบเบฐเบเบฑเบเบเบปเบเบขเบนเปเบเบฐเบกเบฒเบ. เบเบตเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเบงเบเปเบเบปเบฒเบเบฐเบเบฑเบเบเบทเบเบฅเบงเบกเปเบเบปเปเบฒเปเบ
เบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบเบดเบเบงเปเบฒเบเบฐเบกเบตเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเบงเบเบกเบฑเบเบเปเปเบกเบตเบเบฐเปเบซเบเบเบญเบตเบเบเปเปเปเบ. เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเปเบฒเบโเบเบฑเบโเบเบธเบโเปเบเปโเปเบโเบเบญเบโเบเปเบฒเบโ
เบเบปเบโเบฅเบฐโเบเบฝเบโเบเบฑเปเบโเบเบตเปโ:
mylib.a: $(only_targets *.o)
&rm -f $(เบเบปเบเบเบฐเบฅเบดเบ)
$(AR) cr $(output) $(inputs)
เปเบฅเปเบงเบเบฑเบเบซเบฒเบเบตเปเบเบฐเบเปเปเปเบเบตเบเบเบถเปเบ.
เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒเบเบตเปเบซเบกเบฒเบเปเบเบดเบเบเบฝเบเปเบเปเปเบเบฅเปเบเบตเปเบฎเบนเปเบงเปเบฒเปเบเบฑเบเปเบเบปเปเบฒเบซเบกเบฒเบ at เปเบเป เบเบตเปเปเบเปเปเบงเบฅเบฒ เบเปเบฒเบ
เบเป "เบเบฝเบเปเบเปเปเบเบปเปเบฒเบซเบกเบฒเบ". เบเปเบฒ "only_targets" เบเบฒเบเบปเบเบขเบนเปเปเบเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเบซเบผเบทเบเบฒเบเบเบฐเบเปเบฒเบเบญเบ a
เบเบปเบเบฅเบฐเบเบฝเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเปเบเบฑเบเปเบเปเบเปเบเบฑเบเบซเบกเบปเบเบเบฐเปเบเบฑเบเบเบตเปเบฎเบนเปเบเบฑเบเปเบเบฒเบฐเบงเปเบฒเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเปเบฅเบฐเบเบฒเบเบเบฐเบเปเบฒเบเปเปเปเบกเปเบ
เบเบฐเปเบกเบตเบเบเบปเบเบเปเบงเบฒเบเบปเบเบฅเบฐเบเบฝเบเบเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเปเบฒเบเปเบฒเบเบเบฐเปเบกเบตเบ, เบเบฐเบเบฒเบเบฒเบกเบเบฐเปเบกเบตเบเบกเบฑเบ
เบเปเบญเบเบซเบเปเบฒเบเบตเปเปเบ makefile เบเบตเปเบกเบตเบเบปเบงเปเบ ":=" เปเบเบเบเบตเป:
ALL_TARGETS := $(only_targets *)
เปเบเบปเปเบฒเปเบฒเบเบเบต 1: เบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบช1
เบซเบธเปเบ
เปเบเบปเปเบฒเปเบฒเบเบเบต 2: เบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบช2
เบซเบธเปเบ
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, "only_targets" เบเบฐเบเปเปเบฎเบนเปเบเปเบฝเบงเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบเบเปเปเปเบ.
เปเบเบฑเปเบเบเบฝเบงเบเบฑเบ, "only_targets" เบเปเปเบฎเบนเปเบเปเบฝเบงเบเบฑเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบเบฐเบฅเบดเบเบขเบนเปเปเบ makefiles เบเบตเปเปเบเบฑเบ
loaded เบเบฑเบ recursive make. (เปเบเปเบเปเบฒเบเบเปเปเบเบงเบเปเบเป recursive make เปเบฅเบตเบ; เปเบเป
เปเบเปเบเบณเบเบฐเปเบซเบผเบ "load_makefile", เบซเบผเบทเบเบฒเบเปเบซเบผเบ makefile implicit เปเบเบ.)
relative_filename เปเบเปเบก 1 เปเบเปเบก 2 file3[, เบเบฑเบ]
เบชเบปเปเบเบเบทเบเบเบทเปเบเบญเบเปเบเบฅเปเปเบซเบผเบปเปเบฒเบเบฑเปเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฑเบเบเบธเบเบฑเบ (เบญเบฑเบเบเบตเป
makefile เบขเบนเปเปเบ). เบเบตเปเบเบฑเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเปเบฎเบฑเบเบเบงเบฒเบกเบชเบฐเบญเบฒเบเบเบตเปเบเปเปเบเปเบฒเปเบเบฑเบ "./" เปเบฅเบฐเบเบตเปเปเบซเบเบทเปเบญเบญเบทเปเบเปเบเบฒเบ
เปเบชเบฑเปเบโเบเบฒเบโ:
DIR := .
SUBDIR :=..
FNAME := $(DIR)/../otherdir/$(SUBDIR)/files
X := $(relative_filename $(FNAME))
If slash เปเบเบฑเบเบเบงเบฒเบกเบเบดเบ (เบเบปเบเบเบฐเบเบดเปเบฅเปเบง 1) เบเบทเปเปเบเบฅเปเบเบตเปเบชเบปเปเบเบเบทเบเปเบกเปเบเบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒเบกเบต slash
เปเบเบ prepending "./" เบเปเบฒเบเปเบฒเปเบเบฑเบ, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบกเบฑเบเปเบเบฑเบเบเบทเปเบเบฐเบเบดเบเบฑเบเปเบเปเปเบเบเบเปเปเบกเบตเบเบฒเบ
เบเบฑเบเบงเบปเบเบเปเบฝเบงเบเบฑเบเปเบชเบฑเปเบเบเบฒเบเบเบปเปเบเบซเบฒเบเปเบฒเบชเบฑเปเบ overriding เบชเบฐเบเบฒเบเบเบตเปเปเบเปเบฅเบเบฐเบเปเบฅเบต.
เบเปเบฒเปเบชเบฑเปเบเบเบฒเบเปเบเปเบเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบฎเบฒเบ, เบเปเปเปเบกเปเบเบญเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเปเบฎเบทเบญเบเบเบญเบเปเบเบปเปเบฒเบซเบผเบท
"$(ROOT)" เบเบญเบเบฅเบฐเบเบปเบเบเบฒเบเบเปเปเบชเปเบฒเบเบเบญเบเบเปเบฒเบ, เบซเบผเบทเบขเบนเปเปเบ Windows เบฎเบฒเบเบเบญเบเปเบ (เบเบถเปเบเบเบฑเบ
เบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก, เบเบตเปเบเบฑเบเปเบเบตเบเบเบถเปเบเบชเปเบฒเบฅเบฑเบ /cygdrive/c or /c), เปเบชเบฑเปเบเบเบฒเบเบขเปเบฒเบเปเบเปเบเบดเบเบเบฐเปเบเบฑเบ
เบเบฑเบเบเบทเบเบกเบฒเปเบเบ.
relative_to เปเบเปเบก 1 เปเบเปเบก 2 file3[, เบเบฑเบเบเบตเบฅเบฒเบเบเบฒเบ]
เบชเบปเปเบเบเบทเบเบเบทเปเบเบญเบเปเบเบฅเปเปเบซเบผเบปเปเบฒเบเบฑเปเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเปเบเปเบฃเบฑเบเบเปเบฃเบตเบเบตเปเบฅเบฐเบเบธ. เบเบตเปโเปเบกเปเบ
เบเบปเบเบเบฐเบเบดเปเบฅเปเบงเปเบเบฑเบเบเบฐเปเบซเบเบเปเบเปเบงเบฅเบฒเบเบตเปเบชเปเบฒเบฅเบฑเบเปเบซเบเบเบปเบเปเบเบเปเปเบเบฒเบกเบเบตเปเบเปเบฒเบเบกเบตเปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบเปเบฒเบชเบฑเปเบเบเบฒเบ a
เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ (เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฐเบเบธเบเบฑเบเปเบฅเบตเปเบกเบเบปเปเบ):
source_backup.tar:
cd .. && tar cf $(relative_to $(output), ..) $(relative_to .,..)
แแ แแ แแ เบเบทเป...
เบชเบฐเบเบฑเบเปเบญเบปเบฒเบชเปเบงเบเบเปเบฒเบเบเบญเบเปเบเปเบฅเบฐเบเบทเปเปเบเบฅเปเปเบเบเบทเป. เบเปเบฒเบเบทเปเปเบเบฅเปเบกเบตเปเบฅเบเบฐเปเบงเบฅเบฒ,
เบเปเบฒเบเปเปเบเปเบฒเบเปเบกเปเบเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเปเบฅเบเบฐเปเบงเบฅเบฒเบชเบธเบเบเปเบฒเบ. เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเบเปเปเบเปเบฒเบเปเบกเปเบ
เบชเบฐเบเบฃเบดเบเบซเบงเปเบฒเบเปเบเบปเปเบฒ. เบเบตเปเบกเบฑเบเบเบฐเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเบปเบเปเบเปเบฎเบฑเบเบเบฐเบซเบงเปเบฒเบเปเบเบปเปเบฒเปเบกเบทเปเบญเบเปเปเบกเบตเบเบทเป,
เปเบฅเบฐเบเปเบฒเบเบทเปเบกเบตเบเบทเปเปเบเบฅเปเบซเบผเบฒเบ, เบเบปเบเปเบเปเบฎเบฑเบเบญเบฒเบเบกเบตเบเบทเปเปเบเบฅเปเบซเบเปเบญเบเบฅเบปเบ.
เบเบปเบโเบเบปเบงโเบขเปเบฒเบ,
$(suffix src/foo.c src-1.0/bar.c hacks)
เปเบซเปเบเบปเบเปเบเปเบฎเบฑเบ ".c .c".
เบเบปเปเบงเบเบฒเบง เบเปเบฒเปเบงเบปเปเบฒ
เปเบซเป makepp เบฎเบนเปเบงเปเบฒเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเปเบญเบฒเบเบเบฐเบเบทเบเปเบเบเบเปเบฒเบเบญเบญเบเปเบเบเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบชเปเบฒเบ
เปเบเบปเบฒเปเบเบปเปเบฒ. เบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบ "phony", เบเบปเบเปเบงเบฑเปเบเบงเปเบฒ makepp เบเบฒเบเบซเบงเบฑเบเบงเปเบฒเปเบเบฅเปเบเบตเปเปเบเปเบเบดเบเบเบญเบเบเบทเปเบเบฑเปเบ
เบญเบฒเบเบเบฐเปเบเปเบฎเบฑเบเบเบปเบเบเบฐเบเบปเบเบเบฒเบเบเบปเบเบฅเบฐเบเบฝเบ. เบเบปเบเบฅเบฐเบเบฝเบเบเปเปเปเบเปเบเบทเบเบเบฐเบเบดเบเบฑเบเบเปเบฒเบซเบฒเบเบงเปเบฒเบเบฝเบเปเบเปเบเบปเปเบงเบเบฒเบงเปเบเบปเปเบฒเบเบฑเปเบ
เปเบเบปเปเบฒเปเบฒเบเปเบกเปเบเบฅเปเบฒเบชเบฐเปเปเปเบฅเปเบง.
wildcard เบฎเบนเบเปเบเบ
เบชเบปเปเบเบเบทเบเบเบทเปเบเบตเปเบเบฑเบเบฎเบฝเบเบเบญเบเปเบเบฅเปเบเบฑเบเปเบปเบเบเบตเปเบเบปเบเบเบฑเบเบฎเบนเบเปเบเบเบเบตเปเปเบซเปเบกเบฒ, เบซเบผเบทเบญเบฑเบเบเบฑเปเบ
เปเบเบฅเปเบเบตเปเบเบฑเบเบเปเปเบเบฑเบเบกเบตเบขเบนเปเปเบเปเบชเบฒเบกเบฒเบเบชเปเบฒเบเปเบเปเปเบเบเบญเบตเบเปเบชเปเบเบปเบเบฅเบฐเบเบฝเบเบเบตเป makepp เบฎเบนเป
เบเปเบฝเบงเบเบฑเบเบเบธเบเปเบเปเบงเบฅเบฒเบเบตเปเบกเบฑเบเบเบฐเปเบกเบตเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบ. เปเบเบเบธเบเบชเบธเบเบเปเบฒเบเบเบตเปเบกเบฑเบเปเบเบเบเปเบฒเบเบเบฑเบ
เบเบฒเบเบเบฒเบเบเปเบญเบเบเบปเบเบฅเบฐเบเบฝเบ, เปเบเบดเปเบเปเบเปเปเบเปเบเบฑเบเปเบเบฅเปเบเบตเปเบชเปเบฒเบเปเบเบเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบเบปเบเปเบซเบฑเบเปเบเบเบฒเบเบซเบผเบฑเบ.
Makepp เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฑเบเบซเบกเบปเบ shell wildcards เบเบปเบเบเบฐเบเบด ("*", "?", เปเบฅเบฐ "[]"). เบกเบฑเบเบเบฑเบเบกเบต a
wildcard "**" เปเบเบดเปเบเบเบปเบเบเบฑเบเบเปเบฒเบเบงเบเบเบญเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเปเบเบเปเบเบเปเบเป. (เบเบงเบฒเบกเบเบดเบเบเบตเปเปเบกเปเบ
เบเบทเบเบฅเบฑเบเบเบฒเบ zsh.) เบเบปเบงเบขเปเบฒเบ, "**/*.c" เบเบปเบเบเบฑเบเบเบฑเบเปเบปเบ .c เปเบเบฅเปเปเบเปเบซเบผเปเบเบเบฑเบเบซเบกเบปเบ
เบเบปเปเบเปเบกเป. "objects/**/*.o" เบเบปเบเบเบฑเบเบเบฑเบเปเบปเบ .o เปเบเบฅเปเบเบตเปเบเบฑเบเบเบธเบขเบนเปเบเบธเบเบเปเบญเบเปเบ
เบเบฑเบเบเบตเบเปเบญเบ เบงเบฑเบเบเบธ เบซเบผเบท เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบ เบซเบผเบท เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบเบเบญเบเบกเบฑเบ. เปเบเป
"**" wildcard เบเบฐเบเปเปเบเบฐเบเบดเบเบฑเบเบเบฒเบกเบฅเบดเบเบเปเบญเปเบญเบเปเปเบเบซเบฒเปเบเปเบฅเบเบฐเบเปเบฅเบตเปเบเบฅเบฐเบเบฑเบเปเบเบเปเปเบเบฒเบก, เปเบฅเบฐเบกเบฑเบเบเบฐเบเปเปเบกเบต
เบเบฐเบเบฒเบเบฒเบกเปเบชเปเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบกเบตเบขเบนเปเปเบเปเบเปเปเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเป. เปเบเบฅเปเปเบฅเบฐ
เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบกเบตเบขเบนเปเปเบเปเบเปเปเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเปเบเบฐเบเปเปเบเบทเบเบชเบปเปเบเบเบทเบเปเบเบ "$(wildcard )".
string เบซเบเปเบฒเบเบตเป
เบเบทเปเบกเบเบณเบเบณเปเปเบฒ เบเบณเบเบณเปเปเบฒ, เบเปเบฒเปเบงเบปเปเบฒ
Prepends เบเปเบฒเบเปเบฒเบซเบเปเบฒ string เบเบฑเบเปเบเปเบฅเบฐเบเปเบฒ. เบเบตเปเปเบกเปเบเบชเปเบงเบเปเบซเบเปเบชเปเบฒเบฅเบฑเบ GNU เปเบฎเบฑเบ
เบเบงเบฒเบกเปเบเบปเปเบฒเบเบฑเบเปเบเป; เบเบฒเบเบเปเบฒเปเบเปเบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบงเปเบเบ rc, เบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบฎเบนเบเปเบเบเบเบตเปเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเปเบซเบผเบฒเบ
เปเบเบฑเปเบเบเบตเป:
เปเบกเบเบนเบ := abcd
X_OLD_STYLE := $(addprefix $(OBJDIR)/, $(addsuffix .o, $(MODULES))))
X_NEW_STYLE := $(OBJDIR)/$(MODULES).o # เบกเบฑเบเบเปเปเบเปเบฒเบเบเบงเปเบฒเบเบตเปเบเบฐเบญเปเบฒเบเบเป?
เบชเปเบงเบเบเบทเปเบก เบเปเปเบเปเบฒเบ, เบเปเบฒเปเบงเบปเปเบฒ
เบเบทเปเบกเบเปเปเบกเบนเบเปเบชเปเบเปเบฒเบเบชเบฐเบเบฃเบดเบเปเบชเปเปเบเปเบฅเบฐเบเบณเบชเบฑเบ. เบเบตเปเปเบกเปเบเบชเปเบงเบเปเบซเบเปเบชเปเบฒเบฅเบฑเบ GNU เปเบฎเบฑเบ
เบเบงเบฒเบกเปเบเบปเปเบฒเบเบฑเบเปเบเป; เบเบฒเบเบเปเบฒเปเบเปเบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบงเปเบเบ rc, เบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบฎเบนเบเปเบเบเบเบตเปเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเปเบซเบผเบฒเบ
เปเบเบฑเปเบเบเบตเป:
X_OLD_STYLE := $(addsuffix .o, $(MODULES))
X_NEW_STYLE := $(MODULES).o
เปเบ เบเบปเบงเปเบ[, เบเปเบฒ]...
เบเบฑเบเบเบฑเบ "เปเบ" เปเบกเปเบเปเบเบฑเบเปเบญเบเบฐเบฅเบฑเบเบเบตเปเบกเบฑเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบเบดเบเบฒเบฅเบฐเบเบฒ เบเบปเบงเปเบ เปเบเบฑเบเบซเบเบถเปเบ
เบเบฒเบเบเปเบฒเบเบฒเบเบเบญเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบกเบญเบเบซเบกเบฒเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบตเปเบชเบฑเบเบชเบปเบเปเบซเป เบเบปเบงเปเบ เปเบฅเบฐเบเปเบฒเปเบเป
"เปเบเบซเบฒ" เปเบเบทเปเบญเบเบฐเบซเบเบฒเบเปเบเบทเปเบญเบซเบฒเบเบญเบเบกเบฑเบเปเบซเปเบเบฑเบเบเปเบฒเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเปเบเบ parameterized เปเบเบ เบเปเบฒเปเบงเบปเปเบฒ เบเปเปเบกเบฒ. เปเบ
เบฅเบฐเบเบปเบเบเบฒเบเบเบฐเบฅเบดเบเบญเบทเปเบเป, เบเบปเบงเปเบเบเบตเปเบเบทเบเบเปเบฒเปเบเปเบเบปเปเบเบเปเปเบเบทเปเบญเบเบธเบเบเบฐเบชเบปเบเบเบตเปเบเบฐเปเบเปเบฎเบฑเบเบเบฒเบเบเบฐเบซเบเบฒเบเปเบเบเบเปเบฒเบ
"เปเบ", เปเบญเบตเปเบเบงเปเบฒ a เบกเบฐเบซเบฒเบเบฒเบ.
เปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเบฐเบซเบเบฒเบเบกเบฐเบซเบฒเบเบฒเบ, เบเบปเบงเปเบเบเบปเปเบงเบเบฒเบง $1, $2, "... " เบญเปเบฒเบเบญเบตเบเปเบเบดเบ
เบเบฒเบเปเบเปเบเบฝเบเบเบตเปเปเบซเป "เปเบเบซเบฒ" เปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบฎเบฝเบเบฎเปเบญเบเบเบญเบเบกเบฑเบ. เบเบปเบงเปเบ $0 เบเบฐเบเบทเบเบเบฐเบซเบเบฒเบเบญเบญเบเปเบ
เบเบทเปเบเบญเบเบกเบฐเบซเบฒเบเบฒเบ (ie เบเบปเบงเปเบ) เบเบตเป "เปเบ" เบเปเบฒเบฅเบฑเบเบเบฐเบซเบเบฒเบเบญเบญเบเปเบ.
เบเปเปโเบกเบตโเบเบญเบโเปเบเบโเบเปเบฒโเบเบฑเบโ, เบงเบดโเบเบตโเบเบฒเบโเปเบเปโเบเบฝเบโเบกเบฐโเบซเบฒโเบเบฒเบโเบเปเบฒโเบเบงเบโเบซเบผเบฒเบโเบญเบฒเบโเบเบฐ "เปเบโ" เบเบฑเบโเบซเบผเบทโเบเปเบฒโเบเบงเบโเบซเบผเบฒเบโ
เบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบ macro เบญเบฒเบเบเบฐเบเบฒเบเบซเบงเบฑเบ. เบเปเบฒเบเปเบฒเบเบเปเบฒเบเบเบฒเบเปเบเปเบเบฝเบเปเบเบตเปเบกเปเบเบตเบกเปเบเบทเปเบญ "เปเบเบซเบฒ" เปเบเบฑเบเบกเบฐเบซเบฒเบเบฒเบ
เบเปเบญเบเบเบฒเบ, เบเบฒเบเปเบเปเบเบฝเบเบเบตเปเปเบเบตเบเบเบฑเบเบซเบกเบปเบเบเบฐเบเบทเบเบเบปเบเปเบฅเบตเบ. เบเปเบฒเบเปเบฒเบเบเปเบฒเบเบเบฒเบเปเบเปเบเบฝเบเบซเบเปเบญเบเบเบงเปเบฒ a
macro เบเบฒเบเบซเบงเบฑเบเบงเปเบฒ, เบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบตเปเปเบเบตเบเบเบฑเบเบซเบกเบปเบเบเบปเบเบฅเบปเบเปเบเบปเปเบฒเปเบเปเบเบชเบฐเบเบฃเบดเบเบซเบงเปเบฒเบเปเบเบปเปเบฒ.
เบซเบเปเบฒเบเปเบฒเบญเบดเบเบเบปเบงเบขเปเบฒเบเบเปเบฒเบเบเบฒเบ:
เบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญ = $(เบฅเบฒเบเบเบฒเบเบเบณเบชเบฑเบ 2, $(เบเบณเบชเบฑเบ $(1)), $(1))
list = ABCDE
butfirst := $(เบเบฑเบเบเปเบญเบเบเบฒเบเปเบ, $(เบฅเบฒเบเบเบทเป))
เบเบตเปเบเบตเป, เบเบปเบงเปเบ "$(butfirst)" เบเบฐเบกเบตเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป "BCDE".
เปเบฅเบฐเปเบเบเบฑเบเบเบธเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบเบเบตเปเบชเบฑเบเบชเบปเบเบซเบผเบฒเบเปเบเบทเปเบญเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบชเบดเปเบเบเบตเปเปเบเบฑเบเปเบเปเบเป:
เบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญ = $(wordlist 2,$(words $(1)),${1})
mymap = $(เบเปเบฒ $2,$(เปเบเบซเบฒ $1,$(เบเบณเบเบณเบญเบดเบ $2)) $(เปเบเบซเบฒ $0,$1,$(เปเบเบญเบญเบ,$2)))
downcase = ${makeperl lc("$1")}
UCWORDS = เบเปเบฒเบเบฑเบเบซเบกเบปเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบ UPCASE
DCWORDS := $(เปเบเบซเบฒ mymap, downcase,$(UCWORDS))
เบเบฝเบงเบเบตเป "$(DCWORDS)" เบเบฐเบเบญเบเบกเบต "เบเบณเบชเบฑเบเบเบฑเบเปเบปเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบเบฑเบเบเบปเบงเบเบดเบกเปเบซเบเป". เปเบเบเบงเบดเบเบตเบเบฒเบเบเบฒเบ: เบกเบฑเบเปเบฎเบฑเบเปเบซเปเบเปเปเบกเบต
เบเบงเบฒเบกเปเบเบเบเปเบฒเบ, เบเปเปเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบเบปเปเบฒเปเบเบดเบเบเบฒเบเปเบเปเบเบฝเบเบเปเบฒเบ $1, "${1}" or "$(1)" เบเบฒเบเปเบเบกเบฐเบซเบฒเบเบฒเบ.
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเบปเบงเปเบเปเบเปเปเบเบเบเบปเบเบเบทเบเบฑเบเบงเปเบฒเบกเบฑเบเปเบเบฑเบเบซเบเปเบฒเบเบตเป, เบเปเบฒเบเปเปเบกเบต
เบซเบเปเบฒเบเบตเปเบเบญเบเบเบทเปเบเบฑเปเบ. เบเบตเปเปเบกเปเบเบเบฒเบเปเบเบเปเบฝเบเปเบเบฑเบ "เปเบ", เบเบฑเปเบเบเบฑเปเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบ
เบเบฝเบเปเบเบปเปเบฒ:
เบเบฒเบเบชเบปเบเบเบฐเบเบฒ = $0 เบเบฒเบเปเบเบฑเบ $1 $2.
เปเบเบเบเบปเบ = $(เบชเบปเบเบเบฐเบเบฒ,เบเบฒเบเปเบเปเบเบฝเบ)
เปเบญเบตเปเบเบงเปเบฒ = $(เปเบเบชเบปเบเบเบฐเบเบฒ,เบญเบฑเบ,เบเบฒเบเปเบเปเบเบฝเบ)
เบกเบฑเบเบญเบฒเบเบเบฐเปเบเบดเปเบเบเบทเบงเปเบฒเปเบเบฑเบเบเบฒเบเปเบเปเบงเบฒเบเบตเบงเปเบฒ "$[call]" เบเบงเบเบเบฐเบซเบเบฒเบเบกเบฐเบซเบฒเบเบฒเบ "$[]" เบซเบผเบทเบเปเป.
เบเบฒเบเบชเบฐเปเบเบเบญเบญเบ, เบซเบผเบทเบเบฑเบเบเบฑเบเปเบเปเบถเปเบเบเบงเบเปเบฎเบฑเบเบชเบดเปเบเบเบฝเบงเบเบฑเบเบชเบฐเปเปเบต, เบเปเปเบงเปเบฒเบกเบฑเบเบเบฐเปเบฎเบฑเบเปเบเบงเปเบ
เปเบญเบตเปเบเบงเปเบฒ. เบชเบธเบเบเปเบฒเบเปเบเปเบเบทเบเปเบฅเบทเบญเบ, เปเบเบฒเบฐเบงเปเบฒเบเปเบงเบ syntax เบเบปเบเบเบฐเบเบดเบกเบฑเบเบเบฐเปเบเบฑเบ
เปเบเบฑเบโเปเบโเบเปเปโเปเบเปโเบเบตเปโเบเบฐโเปเบเปโเบฎเบฑเบ "$[1], $[2]..." เปเบเบฑเบโเบเบปเบงโเบเปเบฝเบ (เบเบงเบโเปเบเบปเบฒโเปเบเบปเปเบฒโเบเบฐโเปเบเปโเบฎเบฑเบโเบเบฒเบโเบเบปเบโเปเบเบโเปเบเบโเบเปเปโเบกเบตโเบซเบเบฑเบ,
เบเปเบญเบเบเบตเปเบงเบฝเบเบเบฒเบเบเบฐเปเบเบตเบเบเบถเปเบ.) เบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเบเปเบฒเบเบกเบตเบกเบฐเบซเบฒเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเบเบปเบ a
เบเบปเบโเบฅเบฐโเบเบฝเบโ, เบเปเบฒเบโเบเปเบญเบโเบเบฒเบโเบเบฒเบโเบชเบฐโเปเบเบโเบญเบญเบโเปเบเบฑเปเบ "$(output)โ" เปเบเบทเปเบญโเปเบซเปโเปเบเปโเบฎเบฑเบโเบเบฒเบโเปเบซเบฑเบโเปเบโเปเบงโเบฅเบฒโเบเบตเปโเบเบปเบโเบฅเบฐโเบเบฝเบโเปเบเปโเบฎเบฑเบโเบเบฒเบโเบงเบดโเปเบเบฒเบฐโ, เบชเบฐโเบเบฑเปเบโ.
เบเปเบฒเบเบเปเบญเบเบเบปเบเบเปเบญเบเบเบงเบเปเบเบปเบฒเบเบฒเบ "เปเบเบซเบฒ":
เบเปเบฒเบเบปเบ myrule
$2: $1
mycommand $$(input) -o $$(output)
เบชเบดเปเบเบชเบธเบ
$[myrule myinput,myoutput]
เบเบฒเบเบเบฑเปเบเบเบญเบ เบฎเบนเบเปเบเบ, เบเปเบฒเปเบงเบปเปเบฒ
เบชเบปเปเบเบเบทเบเบเบณเบชเบฑเบเบเบฑเบเปเบปเบเปเบเบฅเบฒเบเบเบฒเบเบเบตเปเบเบปเบเบเบฑเบเบฎเบนเบเปเบเบเบเปเบฒเบเป. เบฎเบนเบเปเบเบเบญเบฒเบเบเบฐเปเบเบฑเบเปเบเบเบญเบทเปเบเป
เบเปเบฒเบชเบฑเบเบเปเบฒเบเป, เบซเบผเบทเบเบฒเบกเบเบฑเบเบเบปเบงเปเบเบ (เปเบเบฑเปเบ, "*", "?", เปเบฅเบฐ "[az]" เบเบทเบเบฎเบฑเบเบฎเบนเป), เบซเบผเบทเบเบงเบเปเบเบปเบฒเบญเบฒเบเบเบฐ
เบกเบตเบเบปเบงเบญเบฑเบเบชเบญเบ "%", เบเบถเปเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเบฐเบเบปเบเบเบฑเบเบชเบฐเบเบฃเบดเบเปเบเบเบถเปเบเปเบเบเบธเบเบเบฑเปเบ (เบเบทเบเบฑเบเบเบฑเบ "*").
filter_out เบฎเบนเบเปเบเบ, เบเปเบฒเปเบงเบปเปเบฒ
เบชเบปเปเบเบเบทเบเบเบณเบชเบฑเบเบเบฑเบเปเบปเบเปเบเบฅเบฒเบเบเบฒเบเบเบตเปเบเปเปเบเบปเบเบเบฑเบเบฎเบนเบเปเบเบ. เบฎเบนเบเปเบเบเบญเบฒเบเบเบฐเปเบเบฑเบเบเบฝเบเปเบเป
เบเปเบฒเบชเบฑเบเบญเบทเปเบ, เบซเบผเบท filename wildcards (เปเบเบฑเปเบ, "*", "?", เปเบฅเบฐ "[az]" เบเบทเบเบฎเบฑเบเบฎเบนเป), เบซเบผเบท
เบเบงเบเบกเบฑเบเบญเบฒเบเบกเบตเบเบปเบงเบญเบฑเบเบชเบญเบ "%", เปเบเบดเปเบเปเบฒเบเปเบเบดเบเบเบฒเบเบเบฑเบเบเบนเปเบชเบฐเบเบฃเบดเบเปเบเปเบถเปเบเบขเบนเปเปเบเบเบธเบเบเบฑเปเบ (เบเบทเบเบฑเบเบเบฑเบ
"*").
เบเบปเบโเบเบปเบงโเบขเปเบฒเบ:
libproduction.a: $(filter_out test_*, $(wildcard *.o))
เบเบฐเปเบญเบปเบฒเบเบฑเบเบซเบกเบปเบ .o เปเบเบฅเปเบเบตเปเบกเบตเบขเบนเปเบซเบผเบทเบชเบฒเบกเบฒเบเบชเปเบฒเบเปเบเป, เบเบปเบเปเบงเบฑเปเบเปเบเบฅเปเบเบตเปเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ เบเบฒเบเบเบปเบเบชเบญเบ_,
เปเบเบปเปเบฒเปเบเปเบ libproduction.a.
เบเบญเบเบซเบฒเบชเบฒเบ เบเบญเบเบซเบฒ, in
Return เบเบญเบเบซเบฒ, เบเปเบฒเบกเบฑเบเปเบเบฑเบ substring เบเบญเบ in.
เบเปเบฒเบเปเบฒเบญเบดเบ เบเปเบฒเปเบงเบปเปเบฒ
เบเบฑเบเบเบทเบเบเปเบฒเบเปเบฒเบญเบดเบ.
เปเบเบเบเบตเป เบเปเบฒเบชเบฑเบเบเปเบฒเบ, perlcode
เปเบเบเบเบตเป เบเปเบฒเบชเบฑเบเบเปเบฒเบ, perlcode
เบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบเปเบเบเบเบตเป Perl, เบเบณเปเบเป perlcode เปเบเบซเบฒเปเบเปเบฅเบฐเบเปเบฒเปเบฅเบฐเบชเบปเปเบเบเบทเบ
เบเบปเบเปเบเปเบฎเบฑเบ. เบเบปเบงเปเบเบเปเบฒเบญเบดเบเปเบกเปเบเบฅเบฐเบซเบฑเบ Perl เบเปเบฒเบกเบฐเบเบฒ, เปเบเบเบฐเบเบฐเบเบตเปเบเบปเบงเปเบเบเบตเบชเบญเบเบเปเบฒเบเบเบฑเปเบเบเปเบฒเบญเบดเบ
perlcode เปเบเบเบเปเบฒเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบงเปเบเปเบเบ Make-style. เบเปเบฒเบชเบฑเบเบเปเบฒเบเปเปเบเปเบเบทเบเบเบฐเบซเบเบฒเบเบขเบนเปเปเบเบเบฑเบเบชเบญเบ
เบเปเบฅเบฐเบเบต.
เบเปเบฒเบชเบฑเบเบเปเบฒเบเปเปเบกเปเบเบขเบนเปเปเบ $_ เปเบฅเบฐเบเบทเบเบชเบปเปเบเบเบทเบเปเบงเบฑเปเบเปเบชเบเปเบเปเบงเปเบฒเบเปเบฒเบ undef $_. เบเบตเปเปเบกเปเบเบเบธเบเบเบฐเบชเบปเบเบชเปเบฒเบฅเบฑเบ
เบเบฒเบเปเบเปเปเบเบเปเปเบชเบฒเบกเบฒเบเบเบฑเบเบเบฒเบเปเบเปเบเปเบฒเบเปเบเบ "patsubst". เบเบฝเบเปเบเปเปเบเบทเปเบญเบเปเบฒเบเบเบธเบเบเบณเบญเบดเบเปเบกเปเบเบเบปเบงเปเบเบ,
เบญเบทเปเบเปเบเบเบทเบเบเบดเบเบฒเบฅเบฐเบเบฒเปเบเบฑเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบ perlcode.
# เบเปเบฝเบเบเบณเบชเบฑเบ. Double paren, เปเบเบทเปเบญเบญเบฐเบเบธเบเบฒเบเปเบซเป paren เปเบ perlcode, เบซเบผเบทเปเบเป ${}:
X = $((เปเบเบเบเบตเป $(VALUES), s/.+)-.+)/$2-$1/))
# เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเป make expressions, เปเบเปเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบเปเบญเบเปเบเป $$ เบชเปเบฒเบฅเบฑเบ Perl $:
Y = $(makemap $(VALUES), tr/$(OLDCHARS)/$(NEWCHARS)/ เบซเบผเบท $$_ = 'เบฅเบปเปเบกเปเบซเบฅเบง')
# เบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบปเบเบฅเปเบฒเบเบเบนเปเบชเบฐเบซเบกเบฑเบ:
Y = $(เปเบเบเบเบตเป $(VALUES), undef $_ เบเปเบฒ /no_good/)
เปเบเบปเปเบฒเบฎเปเบงเบก เบเปเบฒโเบชเบฑเบโเบเปเบฒเบเป 1โ, เบเปเบฒ2
เปเบฎเบฑเบเบเบฒเบเปเบเบปเปเบฒเบฎเปเบงเบกเบเบนเปเบเบญเบเบเปเบฒเบเปเบฒเบญเบดเบเปเบฅเบฐเบเปเบฒเบเบตเบชเบญเบ.
เบฎเบฑเบเบฎเบญเบ เบฎเบนเบเปเบเบ, เปเบเบ, เบเปเบฒเปเบงเบปเปเบฒ
เบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบปเบเปเบเบเปเบเปเบฅเบฐเบเปเบฒเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเปเบฒ. เบเบปเบงเบญเบฑเบเบชเบญเบ "%" เบเบปเบเบเบฑเบเบเบปเบงเปเบ
เบชเบฒเบ. เบเบตเปเปเบกเปเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบตเบเบตเปเบชเบธเบเปเบเบเบเบปเบงเบขเปเบฒเบ:
OBJS = $(patsubst %.c, object_dir/%.o, $(C_SOURCES))
เปเบญเบปเบฒเบเบธเบเปเบเบฅเปเปเบ C_SOURCES เปเบฅเบฐเบชเบปเปเบเบเบทเบเบเบทเปเบเบญเบเปเบเบฅเปเบงเบฑเบเบเบธเปเบ object_dir.
เบเบฒเบเบเบฑเปเบเบกเบฑเบเบกเบตเบเบงเบฒเบกเบเบฑเบเปเบเบเบเบงเปเบฒเบเบตเปเบเบฐเปเบเปเบเบฒเบเบญเปเบฒเบเบญเบตเบเบเบฒเบเบเบปเบเปเบเบ, เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเปเบเบดเบเบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป
เปเบเปเบเบทเบเบเบฝเบเปเบเบฑเบ
OBJS = $(C_SOURCES:%.c=object_dir/%.o)
เบเบฒเบเบเบฑเบเบฅเบฝเบ เบเปเบฒ1 เบเปเบฒ2 เบเปเบฒ3 ...
เบเบฑเบโเบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโเปเบโเบฅเปเบฒโเบเบฑเบ lexical เปเบฅเบฐโเบฅเบปเบโเบเบฒเบโเบโเปโเปเบฒโเบเบฑเบโ.
เบญเบญเบ string
เปเบญเบปเบฒเบเปเบญเบเบซเบงเปเบฒเบเบเบฒเบเปเปเบฒ เปเบฅเบฐเบเปเปเบเปเบฒเบเบญเบญเบเบเบฒเบเบชเบฐเบเบฃเบดเบ เปเบฅเบฐเปเบเบเบเบตเปเปเบเปเบฅเบฐเบเบฒเบเปเบ
เบฅเบณเบเบฑเบเบเบญเบเปเบถเปเบ เบซเบผเบทเบซเบผเบฒเบเบเบปเบงเบญเบฑเบเบชเบญเบเบเบตเปเบกเบตเบเปเบญเบเบซเบงเปเบฒเบเบเบฝเบง. เบเบฑเปเบเบเบฑเปเบ, "$(strip ab
c )" เบเบปเบเปเบเปเบฎเบฑเบเปเบ "abc".
เบเปเบญเบ เบเบฒเบ, เปเบเบดเบ, เบเปเปเบเบงเบฒเบก
เบเบฐเบเบดเบเบฑเบเบเบฒเบเบเปเบฝเบเปเบเบเบเปเปเบเบงเบฒเบกเปเบเบเปเปเบเบงเบฒเบก: เปเบเปเบฅเบฐเบเบฐเบเบปเบเบเบฒเบเบกเบฒเบเบฒเบเปเบกเปเบเปเบเบเบเบตเป
เปเบเบ. เบเบปเบเปเบเปเบฎเบฑเบเปเบกเปเบเบเบปเบเปเบเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบญเบตเปเบเบเบฑเบเบเบฑเบ. เบเบปเบโเบเบปเบงโเบขเปเบฒเบ,
$(subst ee,EE,เบเบตเบเบขเบนเปเบเบฐเปเบปเบ)
เปเบเบ string "fEEt on the strEEt".
เบเปเบฒ n, เบเปเปเบเบงเบฒเบก
เบเบฑเบเบเบทเบ nth เบเปเบฒโเบเบญเบโ เบเปเปเบเบงเบฒเบก. เบเบธเบเบเปเบฒเบเบตเปเบเบทเบเบเปเบญเบเบเบญเบ n เปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบ 1 เปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบ
เบซเบผเบทเบเบญเบเบซเบผเบฑเบเบเบฒเบ -1 เปเบเบเบญเบเบเปเบฒเบ. เบเปเบฒ n เปเบกเปเบเปเบซเบเปเบเบงเปเบฒเบเปเบฒเบเบงเบเบเปเบฒเบเบตเปเบขเบนเปเปเบ เบเปเปเบเบงเบฒเบก, เบเบฒเบ
เบเปเบฒเบซเบงเปเบฒเบเปเบเบปเปเบฒ.
เบฅเบฒเบเบเบฒเบเบเบณเบชเบฑเบ เบเบฑเบเบเบตเบฅเบฒเบเบเบฒเบเบเบฑเบเบชเบฐเบเบต, เบเปเบฒเปเบงเบปเปเบฒ
เบฅเบฒเบเบเบฒเบเบเบณเบชเบฑเบ เบเบฑเบโเบเบฐโเบเบตโเบเปเบฒโเบญเบดเบโ, เบเบฑเบเบเบฐเบเบตเบชเบธเบเบเปเบฒเบ, เบเปเบฒเปเบงเบปเปเบฒ
เปเบเบฎเบนเบเปเบเบเบเปเบฒเบญเบดเบเบเบตเปเบเปเบฒเบเบชเบฐเบซเบเบญเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบฑเบเบเบฐเบเบต (เบเบฑเบเบเบฒเบ 1 เปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบเบซเบผเบท
เบเบญเบเบซเบผเบฑเบเบเบฒเบ -1 เปเบเบเบญเบเบเปเบฒเบ) เปเบเบทเปเบญเปเบฅเบทเบญเบเบเปเบฒเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบ. เปเบเบฎเบนเบเปเบเบเบเบตเบชเบญเบเบเปเบฒเบ
เบฅเบฐเบเบธเบเบญเบเปเบเบเบเบญเบเบเปเบฒเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบเบชเบปเปเบเบเบทเบ.
เบเปเบฒเปเบงเบปเปเบฒ เบเปเปเบเบงเบฒเบก
เบเบญเบเบเบณเบเบงเบเบเบณเบชเบฑเบเปเบ เบเปเปเบเบงเบฒเบก.
Miscellaneous เบซเบเปเบฒเบเบตเป
foreach var,เบฅเบฒเบเบเบทเป,เบเปเปเบเบงเบฒเบก
เบชเบญเบโเบเบฒเบโเปเบเปโเบเบฝเบโเบเปเบฒโเบญเบดเบโ, var เปเบฅเบฐ เบเบฑเบเบเบตเบฅเบฒเบเบเบทเป, เบเบทเบเบเบฐเบซเบเบฒเบเบญเบญเบเบเปเบญเบเบเบตเปเบเบฐเปเบฎเบฑเบเบซเบเบฑเบเบญเบตเบ; เบซเบกเบฒเบโเปเบซเบโ
เบงเปเบฒเบเบฒเบเปเบเปเบเบฝเบเบชเบธเบเบเปเบฒเบ, เบเปเปเบเบงเบฒเบก, เบเปเปเปเบเปเบเบทเบเบเบฐเบซเบเบฒเบเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบเปเบฒเบชเบฑเบเบเบญเบ
เบกเบนเบเบเปเบฒเบเบฒเบเบเบฐเบซเบเบฒเบเบเบญเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป, เบเบปเบงเปเบเบเบตเปเบเบฑเปเบเบเบทเปเปเบเบเบเปเบฒเบเบฐเบซเบเบฒเบเบเบญเบ var เบเบทเบเบเปเบฒเบเบปเบเปเบเบฑเบ
เบเปเบฒเบเบฑเปเบ, เปเบฅเบฐเบเปเปเบเบงเบฒเบกเบเบทเบเบเบฐเบซเบเบฒเบเบญเบญเบ. เบเปเปเบเบงเบฒเบกเบเบตเปเบชเบปเบกเบกเบธเบเบงเปเบฒเบกเบตเบเบฒเบเบญเปเบฒเบเบญเบตเบเปเบเบดเบเบเบปเบงเปเบเบเบฑเปเบ,
เบเบฑเปเบเบเบฑเปเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบงเบเบญเบเบกเบฑเบเบเบฐเปเบเบเบเปเบฒเบเบเบฑเบเปเบเปเบเปเบฅเบฐเบเบฑเปเบ.
เบเบปเบงเบขเปเบฒเบเบเปเบฒเบเบเบฒเบเบเบตเปเบเปเบฒเบเบปเบเบเบปเบงเปเบ เปเบ เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเปเบเบฅเปเบเบฑเบเบซเบกเบปเบเปเบ
เบฅเบฒเบโเบเบฒเบโเปเบโเบเบฑเบโเบเบตโเบฅเบฒเบโเบเบฒเบโ เบเบตเปเบขเบนเป:
dirs := abcd
เปเบเบฅเป := $(foreach dir,$(dirs),$(wildcard $(dir)/*))
เบเปเปเบเบงเบฒเบกเบเบตเปเปเบกเปเบ "$(wildcard $(dir)/*)". เบเบฒเบเบเปเบฒเบเบซเปเบญเบเบเปเบฒเบญเบดเบเบเบญเบเบซเบฒเบเปเบฒ "a" เบชเปเบฒเบฅเบฑเบ dir,
เบชเบฐเบเบฑเปเบเบกเบฑเบเบเบฐเบฅเบดเบเบเบปเบเบเบฝเบงเบเบฑเบเบเบฑเบ "$(wildcard a/*)"; เบเบฒเบเบเปเบฒเบเบซเปเบญเบเบเบตเบชเบญเบเบเบฐเบฅเบดเบ
เบเบปเบเบเบญเบ "$(wildcard b/*)"; เปเบฅเบฐเบญเบฑเบเบเบตเบชเบฒเบก, เบเบญเบ "$(wildcard c/*)".
เบเบปเบงเบขเปเบฒเบเบเบตเปเบกเบตเบเบปเบเปเบเปเบฎเบฑเบเบเบฝเบงเบเบฑเบ (เบเบปเบเปเบงเบฑเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ "dirs") เปเบเบฑเบเบเบปเบงเบขเปเบฒเบเบเปเปเปเบเบเบตเป:
เปเบเบฅเป := $(wildcard a/* b/* c/* d/*)
เปเบกเบทเปเบญเบเปเปเบเบงเบฒเบกเบกเบตเบเบงเบฒเบกเบชเบฑเบเบชเบปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเบเบธเบเบเบฒเบเบญเปเบฒเบเปเบเปเปเบเบเบเบฒเบเปเบซเปเบเบทเป, เบเบฑเบ
เบเบปเบงเปเบเปเบเบตเปเบกเปเบเบตเบก:
find_files = $(wildcard $(dir)/*)
dirs := abcd
เปเบเบฅเป := $(foreach dir,$(dirs),$(find_files))
เปเบเบเบตเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเป find_files เบเบปเบงเปเบเบเปเบงเบเบงเบดเบเบตเบเบตเป. เบเบงเบเปเบฎเบปเบฒเปเบเป "=" เบเปเบฒเบกเบฐเบเบฒเปเบเบทเปเบญเบเปเบฒเบเบปเบ a
เบเบปเบงเปเบ recursively-expanding, เบเบฑเปเบเบเบฑเปเบเบกเบนเบเบเปเบฒเบเบญเบเบกเบฑเบเบเบฐเบเบญเบเบเปเบงเบเบเบฒเบเปเบเบซเบฒเบซเบเปเบฒเบเบตเปเบเบปเบงเบเบดเบ
เปเบเปเบฎเบฑเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเบทเบเบเบฒเบเปเบเปเบเบฒเบเบเบงเบเบเบธเบกเบเบญเบ foreach; เบเบปเบงเปเบเบเบตเปเบเบฐเบซเบเบฒเบเปเบเบเบเปเบฒเบเปเบเบฐเบเปเปเปเบฎเบฑเบ,
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ wildcard เบเบฐเบเบทเบเปเบญเบตเปเบเบเบฝเบเปเบเปเบเบฑเปเบเบเบฝเบงเปเบเปเบงเบฅเบฒเบเปเบฒเบเบปเบ find_files.
เปเบฒเบเปเบซเบ: เบขเปเบฒเบชเบฑเบเบชเบปเบเบเบฑเบเบเบปเบงเปเบเบเบดเปเบชเบ "$(foreach)".
เบเปเปเบกเบนเบ เบเปเปเบเบงเบฒเบก
เบเบฒเบเปเบเบทเบญเบเปเบ เบเปเปเบเบงเบฒเบก
เบเบงเบฒเบกเบเบดเบเบเบฒเบ เบเปเปเบเบงเบฒเบก
เบเบดเบกเบเปเปเบเบงเบฒเบกเบเบตเปเบชเบปเปเบเบเบทเบเบเปเปเบกเบตเบซเบเบฑเบ. เบญเบฑเบเบเปเบฒเบญเบดเบเปเบ STDOUT, เบญเบฑเบเบเบตเบชเบญเบเปเบเบซเบฒ STDERR,
เบญเบฑเบเบเบตเบชเบฒเบกเบเบญเบเบเบฒเบเบเบฑเปเบเบเบปเบเปเบฅเบตเบเบเบฒเบเบเบธเบเปเบเปเบ.
เบชเปเบฒเบเบเปเบญเบ เปเบเบปเปเบฒเบซเบกเบฒเบ
เปเบฎเบฑเบเปเบซเป เปเบเบปเปเบฒเบซเบกเบฒเบ
เบชเบปเปเบเบเบทเบเบเบฒเบเปเบเปเปเบเปเบเบเบญเบเบกเบฑเบ verbatim, เปเบเปเบเปเบฒเบญเบดเบเบชเปเบฒเบเปเบเบฅเปเบเบฑเบเบซเบกเบปเบเบเบตเปเบฅเบฐเบเบธเปเบงเป. เบเบตเปเปเบกเปเบเปเบเบฑเบเบเบฐเปเบซเบเบ
เปเบกเบทเปเบญเปเบญเบเบฐเบชเบฒเบเบเบตเปเปเบซเปเบกเบฒเปเบกเปเบเบเปเบญเบเบเบฒเบเปเบกเบทเปเบญเบเบฐเปเบกเบตเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบ. เปเบเบเบเบปเบเบเบฐเบเบดเบเบตเปเปเบเบตเบเบเบถเปเบ
เปเบกเบทเปเบญเบเปเบฒเบเบกเบตเบเบฒเบเบเปเปเบชเปเบฒเบเบเบตเปเบเบธเบเบเบญเบเปเบเบฅเปเบเบตเปเบเปเบฝเบงเบเปเบญเบเปเบเปเบเบทเบเบเบดเบเปเบฅเปเปเบเบเปเบเบฐเบเบฒเบ
เบเปเบฒเบชเบฑเปเบ. เบเบปเบโเบเบปเบงโเบขเปเบฒเบ,
file_list :
# เบเบณเบชเบฑเปเบ shell เปเบเบทเปเบญเบเบณเบเบงเบเบฅเบฒเบเบเบฒเบเปเบเบฅเปเบเบตเปเบเบฐเปเบชเปเปเบเบปเปเบฒเปเบเปเบเบฃเปเบเบฃเบก
my_program : $(&cat $(prebuild file_list))
เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบฅเบฒเบเบเบทเปเปเบเบซเบผเบฒเบเบเบงเปเบฒเบซเบเบถเปเบเบเบปเบเบฅเบฐเบเบฝเบ, เบกเบฑเบเบเบฐเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบซเบผเบฒเบเบเบตเปเบเบฐเปเบเป
เบเบฐเบซเบเบฒเบเบเบปเบงเปเบเบซเบผเบฒเบเบเบฑเปเบ:
file_list ;= $(&cat $(prebuild file_list))
my_program1 : ao $(file_list)
my_program2 : bo $(file_list)
เบเปเบฒเปเบเบเบเบตเปเบเปเบฒเบเบฅเบฐเบเบธเบเบฝเบเปเบเป "$(&cat file_list)", เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ makepp เบเบฐเบเปเปเบเบฑเบเบเบฑเบ
file_list เปเบเบทเปเบญเปเบซเปเบเบฑเบเบชเบฐเปเบซเบกเบเปเบญเบเบเบตเปเบกเบฑเบเบเบฐเบเบฐเบเบดเบเบฑเบเบเปเบฒเบชเบฑเปเบ shell. เบเบฒเบเปเบเป "$(prebuild)"
เปเบเบฑเบเบงเบดเบเบตเบเบตเปเบเบตเบเบตเปเบชเบธเบเปเบเบทเปเบญเปเบเปเปเบเบเบฑเบเบซเบฒเบเบตเป. เบเปเบฒเบเบญเบฒเบเบเบฐเบเบทเบเบฅเปเปเบฅเบงเบเปเบซเปเบฅเบญเบเบชเบดเปเบเบญเบทเปเบเปเบเบฑเปเบ
เบเบตเป:
my_program : file_list $(&cat file_list)
เปเบเปเบเบตเปเบเบฐเบเปเปเปเบฎเบฑเบเบงเบฝเบเปเบเบฒเบฐเบงเปเบฒ "$(&cat file_list)" เบเบทเบเบเบฐเปเบกเบตเบเบเปเบญเบเบเบตเป makepp เบเบฐเบเบฒเบเบฒเบก
เบชเปเบฒเบ "file_list".
only_phony_targets เบเบทเป
เบชเบปเปเบเบเบทเบเบเบฝเบเปเบเปเบเบทเปเปเบซเบผเบปเปเบฒเบเบฑเปเบเบขเบนเปเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเปเบเบฑเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบซเบผเบญเบเบฅเบงเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบขเปเบฒเบ (เบเปเปเบงเปเบฒเบเบฐ
เบเบปเบโเบฅเบฐโเบเบฝเบโเบขเปเบฒเบโเบเบฑเบโเปเบเบโเบซเบผเบทโเบฎเบนเบโเปเบเบโ)โ. เปเบเบปเปเบฒเบญเบฒเบเบเบฐเบฅเบฐเบเบธเบเบปเบงเปเบเบ (เบฅเบงเบกเบเบฑเบเบเบฒเบเบเบดเปเบชเบเบเบญเบ makepp
wildcard, "**") เปเบเบเบทเปเปเบเบฅเป. (เปเบเบดเปเบเบซเบเปเบฒเบเบตเป "$(wildcard )" เบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบก.
เบเบตเปเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบธเปเบกเปเบเบปเปเบฒเบซเบกเบฒเบ, เบเบปเบงเบขเปเบฒเบ:
$(เบเบฒเบเบเบปเบเบชเบญเบ phony): $(only_phony_targets */**/tests)
เบเบปเปเบเบเปเบฒเปเบเบตเบ เบเบปเบงเปเบ
เปเบเบเปเบซเปเบเบทเปเบเบญเบเบเบปเบงเปเบ, เบเบญเบเบเปเบฒเบเบงเปเบฒเบเปเบฒเบเบญเบเบกเบฑเบเบกเบฒเบเบฒเบเปเบช.
perl perlcode
เบเบนเปเบเบฐเบฅเบดเบ perlcode
เบเบฐเปเบกเบตเบ perlcode เปเบเบเบฅเบฑเบญเบเปเบฅเบฐเบชเบปเปเบเบเบปเบเปเบเปเบฎเบฑเบ. เบเบปเบงเปเบเบเปเบฒเบญเบดเบเปเบกเปเบ Perl เบเปเบฒเบกเบฐเบเบฒ
เบฅเบฐเบซเบฑเบ, เปเบเบเบฐเบเบฐเบเบตเปเบเบปเบงเปเบเบเบตเบชเบญเบเบเปเบฒเบญเบดเบเบเปเบฒเบ perlcode เบเปเบฒเบเบเบปเบงเปเบเปเบเบ Make-style
เบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบง.
เปเบฒเบเปเบซเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฑเบเบเบฑเบเปเบปเบ, เบเบปเบงเบเบฑเปเบเบเบฑเบเบเบฑเบเบเบตเปเปเบเปเบญเบฒเบเบเบฐเบเปเปเบเบฒเบเบปเบเบขเบนเปเบเบฒเบเปเบ
perlcode เบขเบนเปเบเบญเบเบชเบฐเบเบฃเบดเบเบเบตเปเบญเปเบฒเบเบญเบตเบเบเบฝเบง เบซเบผเบทเบเบนเป. เปเบเปเบเปเบฒเบเบชเบฒเบกเบฒเบ double เบกเบฑเบเบเบทเบเบฑเบเปเบ
เบเบปเบงเบขเปเบฒเบเบชเบธเบเบเปเบฒเบ:
VAR = 1
VAR1 = ${perl ($VAR + 1) * 3}
VAR2 = $(perl do { $VAR *= 3; เบชเบปเปเบเบเบทเบ $VAR + 1 } เบเปเบฒ $VAR)
VAR3 = $(makeperl $(VAR1) * 3 + $$VAR) # เบซเบเบถเปเบเปเบฎเบฑเบเปเบซเป var เปเบฅเบฐเบซเบเบถเปเบ Perl var
VAR = $((perl เบเปเบฒ(... ) { ... }))
phony เบเปเบฒเปเบงเบปเปเบฒ
เบเบตเปเปเบซเปเปเบซเบฑเบเบงเปเบฒเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเปเบฒเบชเบฑเบเบเปเบฒเบเปเปเบกเปเบเปเบเบปเปเบฒเบซเบกเบฒเบ phony, เปเบฅเบฐเบชเบปเปเบเบเบทเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบ
เปเบเบปเปเบฒเปเบฒเบ. เบกเบฑเบเบกเบตเบเบธเบเบเบฐเบชเบปเบเปเบเบทเปเบญเปเบเปเปเบเบเบเบตเป:
$(phony all): my_program
$(เบฅเปเบฒเบโเบเบดเบโเบเบฒเบ):
&rm -f *.o my_program
เบเบญเบเบเบฑเปเบเบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเบเบฐเบเบฒเบเบซเบเบถเปเบเบซเบผเบทเบซเบผเบฒเบเปเบเบปเปเบฒเบซเบกเบฒเบเปเบเบฑเบ phony เบเบฑเบเปเบชเบฑเปเบเปเบเบฑเปเบเบเบตเปเบเบธเบเบเปเบญเบเปเบ
makefile เบเบญเบโเบเปเบฒเบโ:
PHONY: เบเบฑเบเปเบปเบเบชเบฐเบญเบฒเบ
เบเบดเบก เบเปเปเบเบงเบฒเบก
เบชเบปเปเบเบเปเปเบเบงเบฒเบกเบญเบญเบ เปเบฅเบฐเบชเบปเปเบเบเบทเบเบกเบฑเบ. เบเบตเปเบชเปเบงเบเบซเบผเบฒเบเปเบกเปเบเปเบเบฑเบเบเบฐเปเบซเบเบเบชเปเบฒเบฅเบฑเบเบเบฒเบ debugging, เปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบเปเปเปเบเป
เปเบเบปเปเบฒเปเบเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบเบเบฒเบเบเปเบฝเบเบเบปเบงเปเบเบเบถเปเบเปเบเปเบเบปเบเบเบตเปเบกเบฑเบเปเบฎเบฑเบ. เบเบปเบโเบเบปเบงโเบขเปเบฒเบ,
XYZ := $(เบเบดเบก $(patsubst %.c, %o, $(SOURCE_FILES)))
เบเบฐเบเบดเบกเบเบปเบเบเบญเบเบเบฒเบเปเบเบซเบฒ "patsubst".
XYZ := $(patsubst %.c, %o, $(เบเบดเบก $(SOURCE_FILES)))
เบเบฐเบเบดเบกเบญเบญเบเบเบฒเบเปเบเปเบเบฝเบเบชเบธเบเบเปเบฒเบเปเบซเปเบเบฑเบเบเบฒเบเปเบ "patsubst".
เบซเบญเบ shell-เบเปเบฒเบชเบฑเปเบ
เบชเบปเปเบเบเบทเบเบเบปเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบณเบชเบฑเปเบ shell เบเบตเปเปเบซเป, เปเบเบเบกเบตเปเบเบงเปเปเปเปเบเบเบเบตเปเบเปเบงเบเบเบฐเบซเบงเปเบฒเบ.
เปเบฒเบเปเบซเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฑเบเบเบฑเบเปเบปเบ, เบเบปเบงเบเบฑเปเบเบเบฑเบเบเบฑเบเบเบตเปเปเบเปเบญเบฒเบเบเบฐเบเปเปเบเบฒเบเบปเบเบขเบนเปเบเบฒเบเปเบ
shell-command เบเบฒเบเบเบญเบเบเบญเบเบชเบฐเบเบฃเบดเบเบเบฝเบงเบซเบผเบทเบชเบญเบเบงเบปเบเบขเบทเบก. เปเบเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบชเบญเบเปเบเบปเปเบฒ
เปเบเบเบปเบงเบขเปเบฒเบเบเบตเบชเบญเบ:
date = $(shell date) # เบเบตเบเบงเปเบฒ: $(perl scalar localtime)
VAR = ${{shell f() { echo เบชเบฐเบเบฒเบเบเบต; }; f}}
xargs เบเปเบฒเบชเบฑเปเบ, arguments[,suffix[,length]]
เบชเบปเปเบเบเบทเบเบฅเบฒเบเบเบทเปเบเบณเบชเบฑเปเบเบเบตเปเบเบฑเปเบเบเปเบงเบเปเบเบงเปเปเปเบเบญเบเบเบณเบชเบฑเปเบเบเบตเปเปเบเปเบฅเบฐเบญเบฑเบเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเบเบฒเบเบฅเบฐเบเบธเปเบงเป
เบเปเบฒเบชเบฑเปเบ, เปเบฅเบฐเบชเบดเปเบเบชเบธเบเบเปเบงเบเบญเบปเบเบเบฐเบเบญเบเบเบญเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบซเบผเบฒเบเปเบเบปเปเบฒเบเบตเปเปเบเบฑเบเปเบเปเบเปเปเบเบเบเปเปเบกเบตเบเบฒเบเปเบ
เบเบงเบฒเบกเบเบฒเบง (เบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ 1000) เบเบปเบงเบญเบฑเบเบชเบญเบ.
เบเบธเบเบเบฐเบชเบปเบเบเบญเบเบเบฒเบเบเบตเปเปเบกเปเบเปเบเบทเปเบญเบซเบผเบตเบเปเบงเบฑเปเบเบเบฒเบ spilling เปเบเบตเบเบเบญเบเปเบเบเบเปเบฒเบเบฑเบเบเบงเบฒเบกเบเบฒเบงเบเปเบฒเบชเบฑเปเบเปเบเบฅเบฐเบเบปเบเบเบญเบเบเปเบฒเบ.
เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบกเบตเบซเบผเบฒเบเปเบเบฅเปเบเบตเปเบชเปเบฒเบเบเบถเปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบฒเบเบเบฐเบเปเบญเบเบเบฒเบเบเบญเบเบเปเบฒเบ
เปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบชเบฐเบญเบฒเบ (เบเบตเปเบเปเบฒเบเบเปเปเบเบงเบเบกเบต, เปเบเบฒเบฐเบงเปเบฒ "makeppclean" เบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบซเบผเบฒเบ) เบเบฑเบ
เปเบเบดเปเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป:
$(เบฅเปเบฒเบโเบเบดเบโเบเบฒเบ):
$(xargs $(RM), $(only_targets **/*))
เบเบตเปเบเบฑเบเบกเบตเบเบปเบเบเปเบฒเบเบเบฝเบเบเบตเปเบเปเปเบกเบตเบเปเบฒเบชเบฑเปเบเปเบเปเบเบตเปเบเบทเบเบชเปเบฒเบเบเบถเปเบเบเปเบฒเบซเบฒเบเบงเปเบฒเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป
เปเบเบตเบโเบเบถเปเบโเปเบเบฑเบโเบซเบงเปเบฒเบโเปเบเบปเปเบฒโ. เปเบเปเปเบเบเปเบฅเบฐเบเบตเบเบตเปเบกเบฑเบเบเบฐเบเบตเบเบงเปเบฒเบเบตเปเบเบฐเปเบเป buildin & rm,
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบฒเบเปเบเปเบเบฝเบเบเบฑเบเบเปเบฒเบชเบฑเปเบ builtin เปเบกเปเบเบเปเบฒเบเบฑเบเบเบฝเบเปเบเปเบเบงเบฒเบกเบเบปเบเบเปเบฒเบเบญเบ Perl:
$(เบฅเปเบฒเบโเบเบดเบโเบเบฒเบ):
&rm -f $(เบเบฝเบ_เปเบเบปเปเบฒเปเบฒเบ **/*)
เบเปเบฒเบกเบตเบเบฒเบเบฅเบฐเบเบธเบเบฒเบเปเบเปเบเบฝเบเบเบตเบชเบฒเบก, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบฑเบเบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญ postfix เปเบเปเบฅเบฐเบเปเบฒเบชเบฑเปเบ. เบเบตเปโเปเบกเปเบ
เบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบฅเบฐเบเบธเบเบปเบงเบเบตเปเบเบดเบเบเบฒเบ, เบเบปเบงเบขเปเบฒเบ (เปเบเบดเบเปเบกเปเบเบงเปเบฒเบขเบนเปเบเบตเปเบเบตเปเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ & echo เบเบฐเบเปเบงเบ):
manifest:
&rm -f $@
&เปเบเบฐ $@
$(xargs echo, $(only_nontargets **/*), >> $@)
เบเบฒเบเปเบญเบเบฐเบชเบฒเบเบเบตเปเปเบกเปเบเบญเบตเบเปเบชเป GNU เปเบฎเบฑเบเปเบญเบเบฐเบชเบฒเบ.
เบเบฐโเบฅเบธโเบเบฒโเบชเบฑเบโเปเบเบโเบงเปเบฒโเบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเบฒเบโเบเปเบฒโเบเบฒเบโเปเบเปโเบฎเบฑเบโเบเบฒเบโเปเบญเบตเปเบโเปเบโเบฅเบฐโเบซเบงเปเบฒเบโเบเบฒเบโเปเบฅเบตเปเบกโเบเบปเปเบ makefileโ, เบเบปเบงโเบขเปเบฒเบโ
เบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบงเบเบญเบเบเบปเบงเปเบเบเบฒเบเบชเบปเปเบเบญเบญเบ, เบเปเปเบเบดเบเบเบฒเบเบซเบผเบทเบเปเปเบเบงเบฒเบกเปเบเบทเบญเบเบเบฐเบฅเบฒเบเบเบฒเบเบเบปเบงเปเบฅเบ 0.
เปเบเป makepp_functions เบญเบญเบเปเบฅเบเปเปเบเบเปเบเปเบเปเบฅเบดเบเบฒเบ onworks.net