เบเบตเปเปเบกเปเบเบเปเบฒเบชเบฑเปเบ makepp_variables เบเบตเปเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเปเปเบ OnWorks เบเบนเปเปเบซเปเบเปเบฅเบดเบเบฒเบเปเบฎเบเบเบดเปเบเบเบฃเบตเปเบเบเปเบเปเบซเบเบถเปเบเปเบเบซเบผเบฒเบเปเบเปเบญเบเปเบฎเบฑเบเบงเบฝเบเบญเบญเบเปเบฅเบเปเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบฑเปเบ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator
เปเบเบเบเบฒเบ:
NAME
makepp_variables -- เบงเบดเบเบตเปเบเปเบเบปเบงเปเบเปเบ makepp
เบฅเบฒเบเบฅเบฐเบญเบฝเบ
?: $*,
$+,
$/,
$<,
$?,
$@,
$^,
=,
!=,
&=,
+=,
:=,
;=,
?=, A: AR,
ARFLAGS,
AS, C: DC,
เบเบธเบ,
"changed_dependencies",
change_inputs,
CurdIR,
CXX,
CXXFLAGS, D: "เบเบงเบฒเบกเปเบเบดเปเบเบเบฒเบญเบฒเปเบช",
"เบเบงเบฒเบกเปเบเบดเปเบเบเบฒเบญเบฒเปเบช", F: F77,
FC,
"foreach", I: เบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ,
เบงเบฑเบเบเบธเบเบดเบ, L: LD,
LEX,
LIBTOOL, M: เปเบฎเบฑเบ,
MAKECMDGOALS,
เปเบเบทเปเบญเบเปเบเปเบเบเบฒเบ,
เบเปเปเบกเบนเบ,
MAKEPP_DEBUG,
เบเบธเบ,
_MAKEPPFLAGS,
MAKEPP_LN_CP,
"makepp_percent_subdir",
"makepp_require_phony",
makepp_signature_C_flat,
"makepp_simple_concatenation",
MAKEPP_VERSION, O: "เบเบปเบเบเบฐเบฅเบดเบ",
"เบเบปเบเปเบเปเบฎเบฑเบ", P: PERL,
PWD, R: RM,
เบฎเบฒเบ, S: เปเบเบฐ,
"sorted_dependencies",
sorted_inputs,
"เบฅเปเบฒ", T: เปเบเบปเปเบฒโเบซเบกเบฒเบ,
เปเบเบปเปเบฒ เปเบฒเบ, V: VPATH, Y: YACC
เบเบปเบเบเบฐเบเบดเปเบฅเปเบง Makefiles เปเบเปเบเบปเบงเปเบเปเบเบซเบผเบฒเบเบเปเบญเบ. เปเบซเบเบเบปเบเบเบตเปเบชเปเบฒเบเบฑเบเบญเบฑเบเบซเบเบถเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเป
เบเบปเบงเปเบเปเบกเปเบเปเบเบทเปเบญเปเบซเปเปเบเปเปเบเบงเปเบฒเบเปเปเบกเบนเบเบเบทเบเบเบฑเบเบเบธเบขเบนเปเปเบเบชเบฐเบเบฒเบเบเบตเปเบเบฝเบงเปเบ makefile, เบเบฑเปเบเบเบฑเปเบ
เบงเปเบฒเบเปเบฒเบซเบฒเบเบงเปเบฒเบกเบฑเบเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบ, เบเปเปเบกเบตเบญเบฑเบเบเบฐเบฅเบฒเบเบเบญเบเบเบฑเบเบชเบญเบเบชเปเบฒเปเบเบปเบฒเบเบญเบเบเปเปเบกเบนเบเบเปเบฒเบงเบชเบฒเบเปเบเปเบฎเบฑเบเบเบฒเบเบญเบญเบเบเบฒเบ
เบเบดเปเบเบเปเปเบกเบนเบ.
เบเบทเปเบเบปเบงเปเบเปเบกเปเบเบเบปเบงเบเบดเบกเบเปเบญเบเปเบซเบเป. เปเบเบเบฒเบเบเบดเบเบชเบฐเบเบต, เบเบทเปเบเบปเบงเปเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบเปเบงเบเบซเบผเบฒเบ
เบฅเบฑเบเบชเบฐเบเบฐเบเปเบฒเบเป, เปเบเป makepp เบญเบฒเบเบเบฐเบเปเปเบชเบฒเบกเบฒเบเบเบนเบเบกเบฑเบเปเบเปเบเปเบฒเบเปเบฒเบเปเบฎเบฑเบเบซเบเบฑเบเบเบญเบเปเบซเบเบทเบญเบเบฒเบ
เบเบปเบงเบญเบฑเบเบชเบญเบเบเบตเปเปเบเบฑเบเบเบปเบงเปเบฅเบ, "_", เปเบฅเบฐ "-".
เปเบเปเบฅเบฐ makefile เบกเบตเบเบธเบเบเบปเบงเปเบเบเบญเบเบเบปเบเปเบญเบ, เปเบฅเบฐเบเปเบฒเบเบปเบเบเบปเบงเปเบเปเบเบซเบเบถเปเบ makefile เบเบฐ
เบเปเปเบกเบตเบเบปเบเบเปเปเบกเบนเบเบเปเบฒเบเบญเบเบกเบฑเบเบขเบนเปเปเบ makefile เบญเบทเปเบเป. เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบซเปเบเบปเบงเปเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเปเปเบ
makefiles เบซเบผเบฒเบ, เบงเบดเบเบตเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเบตเปเบเบฐเปเบฎเบฑเบเบกเบฑเบเปเบกเปเบเปเบเบทเปเบญเปเบซเปเปเบเปเบฅเบฐเบเบปเบเบกเบตเบเปเบฒเบเบดเบเบฒเบกเบเบปเปเบงเปเบ
เปเบเบฅเป (เปเบเบดเปเบเบเปเบฒเบเบฐเปเบซเบผเบเบเบตเปเบเบฐเบเบญเบเบกเบต) เบซเบผเบทเปเบเปเบเบปเบงเปเบ "เบเบปเปเบงเปเบฅเบ".
เบเบฒเบเบเปเบฝเบเปเบเบ เบเบฒเบเบกเบญเบเบซเบกเบฒเบ
เบเบปเบงเปเบเบชเบฒเบกเบฒเบเบชเบปเบกเบกเบธเบเบกเบนเบเบเปเบฒเปเบเบซเบผเบฒเบเบงเบดเบเบตเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ:
ยท เบเบปเบงเปเบเบญเบฒเบเบเบฐเบเบทเบเบเบฑเปเบเบขเบนเปเปเบ makefile. เบกเบตเบซเบผเบฒเบเบงเบดเบเบตเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเบตเปเบเบฐเปเบฎเบฑเบ
เบเบตเป; เปเบเบดเปเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป.
ยท เบเปเบฒเบเบญเบเบเบปเบงเปเบเบญเบฒเบเบเบฐเบเบทเบเบฅเบฐเบเบธเปเบงเปเปเบเปเบชเบฑเปเบเบเบณเบชเบฑเปเบ, เปเบเบเบเบตเป:
makepp CFLAGS=-O2 my_program
เบเปเบฒเบกเบตเบซเบผเบฒเบเบเบงเปเบฒเบซเบเบถเปเบ makefile เบเบทเบเปเบซเบฅเบ, เบเบปเบงเปเบ CFLAGS เบเบฐเบเบทเบเปเบเบตเบเปเบเปเปเบเบซเบฒเบเบฑเบเบซเบกเบปเบเบเบญเบ
makefiles. เบเบปเบงเปเบเบเบตเปเบเบฑเปเบเบขเบนเปเปเบเบเบฑเบเบเบฑเบเบเปเบฒเบชเบฑเปเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ override เบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเปเบเบญเบ
เบเบปเบงเปเบเปเบ makefiles เปเบ.
เบเปเบฒเบเปเบญเบเบเบฒเบ, makefile เบเบฐเบเปเบญเบ override เบเบฒเบเบเบฑเปเบเบเปเบฒเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบเบขเปเบฒเบเบเบฑเบเปเบเบ.
เบเบงเบฒเบกเบเบฑเปเบเปเบเปเบกเปเบเบเปเปเบชเบปเบเปเบเบชเบดเปเบเบเบตเปเบเบนเปเปเบเปเบฎเปเบญเบเบเป, เปเบเปเปเบเบเบเบตเปเบเบฐเปเบเบฑเบเบงเบดเบเบตเบเบฒเบเบเบฑเบเปเบเบเบกเบฑเบ.
เบเบปเบงเปเบเปเปเบ "override" เบญเบฒเบเบเบฐเบเปเบฒเบซเบเปเบฒเบเปเบฒเบเบฐเปเบซเบผเบเบเบฒเบเบกเบญเบเบซเบกเบฒเบเปเบเป. เปเบเปเปเบเบเปเบฅเบฐเบเบตเบเบญเบ
เบเปเบฒเบเบฐเปเบซเบผเบเบเบฒเบเบเปเบฒเบชเปเบฒเบเบฑเบ, เบเปเบฒเบชเบฑเปเบเปเบกเปเบเบชเปเบฒเบเบฑเบ, เบเบถเปเบเปเบเบฑเบเปเบซเบเบเบปเบเบเบตเปเบงเปเบฒเบเบปเบงเปเบ override เปเบกเปเบ
เบชเบฐโเปเบเบโเปเบซเปโเปเบซเบฑเบโเบขเบนเปโเบเปเบฒเบโเบฅเบธเปเบกโเบเบตเปโเบชเบฐโเปเบซเบกเบตโ. เบเบปเบงเปเบเปเปเบ "override" เบเบณเปเบเปเบเบฑเบเบงเบฝเบเปเบเบเบถเปเบเบเบตเปเบกเบฑเบเปเบเบปเปเบฒเบเบฑเปเบ
เบเบฐเบเบธเบเบฑเบ, เปเบฅเบฐเบเปเปเบกเบตเบญเบดเบเบเบดเบเบปเบเบเปเปเบเบฒเบเบกเบญเบเบซเบกเบฒเบเบเปเปเบกเบฒเบเบฑเบเบเบปเบงเปเบ.
ยท เบเปเบฒเบเบปเบงเปเบเบเบทเบเบเบฑเปเบเปเบงเปเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก, เบกเบฑเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเบญเบตเบเปเบเบฑเบเบเบปเบงเปเบ makepp.
เบเบปเบเบเบฐเบเบดเบเบฒเบเบกเบญเบเปเบฒเบเปเบซเปเบเบฑเบเบเบปเบงเปเบเบเบฒเบเปเบ makefile override เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบ
เบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก, เปเบเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฝเบเปเบเบเปเบเปเปเบเบเบเบฒเบเปเบเป "-e" เบซเบผเบท "--environment-overrides"
เบเบปเบงเปเบฅเบทเบญเบเปเบชเบฑเปเบเบเบฒเบเบเปเบฒเบชเบฑเปเบ.
เบเบปเบงเปเบเบเบทเบเบกเบญเบเปเบฒเบเบเปเบงเบเปเบถเปเบเปเบเบซเบผเบฒเบเบเบฒเบเบชเบฐเปเบเบเบเบปเบ, เปเบเบฑเปเบเบเบตเป
X = 1
เปเบกเบเบนเบ := abcd
CC ?= gcc
CFLAGS += -เบเบฒ
เบเปเบฒเบเบปเบ VAR
var เปเบเบง 1
var เปเบเบง 2
enddef
เปเบชเบฑเปเบเบเบฒเบเบชเบปเปเบเบญเบญเบ := $(PWD):$(PATH)
global MYPROJECT.INFO = เบเปเปเบกเบนเบเบเบตเปเบเบฐเปเบซเบฑเบเปเบ makefiles เบเบฑเบเปเบปเบ
เบเบฒเบเบเบณเปเปเบฒ เปเบฅเบฐเบเบฑเบเบเบฒเบเบเปเบญเบเบซเบงเปเบฒเบเบญเปเบญเบกเบเปเบฒเบเปเบฒเบเปเบเบฐเบเบทเบเบเบญเบเบญเบญเบเบชเบฐเปเปเบต.
เบเบนเปเบเบฐเบเบดเบเบฑเบเบเบฒเบเบกเบญเบเบซเบกเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบกเบตเบเบงเบฒเบกเบซเบกเบฒเบเปเบเบเบเปเบฒเบเบเบฑเบ.
เบเปเบฒเบเบเบฒเบ เบเบฒเบเบกเบญเบเบซเบกเบฒเบ เบเบนเปเบเบฐเบเบญเบเบเบฒเบ
=
VARIABLE = เบเปเปเบเบงเบฒเบก
override VARIABLE = เบเปเปเบเบงเบฒเบก
เบเบตเปโเปเบกเปเบโเบเปเบฒโเบเบฐโเปเบซเบผเบโเบเบฒเบโเบกเบญเบโเบซเบกเบฒเบโเบเบปเบโเบเบฐโเบเบดโเบเบตเปโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบฑเบโเบซเบกเบปเบโเบเบญเบโเบเบฒเบโเบชเบฐโเบซเบเบฑเบโเบชเบฐโเบซเบเบนเบโ. เปเบเป
เบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบฒเบเบเปเบฒเบเบเบงเบฒเบกเบทเบเปเปเปเบเปเบเบทเบเบเบฐเปเบกเบตเบเบเบปเบเบเปเบงเบฒเบกเบนเบเบเปเบฒเบเบญเบ "$(VARIABLE)" เปเบกเปเบ
เปเบเปเบเบปเบงเบเบดเบเบขเบนเปเบเปเบญเบเปเบเบเปเบญเบเปเบถเปเบ. เบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเบเปเบฒเบเปเบฎเบฑเบเบเบฑเปเบเบเปเปเปเบเบเบตเป:
X = 1
Y = $(X)
X = 2
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, "$(Y)" เบเปเปเบกเบฒเปเบ makefile เบเบฐเบเบฐเปเบกเบตเบเปเบเบฑเบ "2".
เปเบเบเบเบปเปเบงเปเบเปเบฅเปเบง, เบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบเป ":=" (เปเบเบดเปเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป) เปเบเบ "=" เปเบเบฒเบฐเบงเปเบฒเบกเบฑเบ
เบชเบฐเบซเบเบญเบเบเบฒเบเบเบฐเปเบกเบตเบเบเบปเบงเปเบเบเบตเปเบเบฒเบเปเบเบปเบฒเปเบเปเบซเบผเบฒเบเบเบถเปเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบกเบตเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบ
เปเบเบทเปเบญเปเบฅเบทเปเบญเบเบเบฒเบเบเบฐเปเบกเบตเบเบเบปเบงเปเบ. เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเปเบฒเบเบเปเบฒเบฅเบฑเบเบเบฝเบ makefile เบเบตเปเบเปเบญเบเปเบเบฑเบ
backwards-compatible with some version of make other than GNU make , เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบเปเปเบกเบต
เบเบฒเบเปเบฅเบทเบญเบ: เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเป "=" เปเบเบปเปเบฒเบเบฑเปเบ.
:=
VARIABLE := expr
override VARIABLE := expr
เบเบตเปเปเบกเปเบเบเบทเบเบฑเบเบเบฑเบ "VARIABLE = expr" เบเบปเบเปเบงเบฑเปเบเบเปเบฒเบเบเบงเบฒเบกเบทเบเบทเบเบเบฐเปเบกเบตเบ
เบเบฑเปเบเบเบฝเบงเปเบฅเบฐเบชเปเบฒเบฅเบฑเบเบเบฑเบเบซเบกเบปเบเปเบเปเบงเบฅเบฒเบเบญเบเบเบฒเบเบกเบญเบเบซเบกเบฒเบ. เบเบฑเปเบเบเบฑเปเบเบเปเบฒ
X := 1
Y := $(X)
X := 2
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, "$(Y)" เบเปเปเบกเบฒเปเบ makefile เบเบฐเบเบฐเปเบกเบตเบเปเบเบฑเบ "1" เบเบฑเบเบเบฑเปเบเปเบเปเบเบฑเปเบเปเบกเปเบเบชเบดเปเบเบเบตเป "$(X)" เปเบกเปเบ.
เปเบกเบทเปเบญ "$(Y)" เบเบทเบเบเปเบฒเบเบปเบ.
;=
VARIABLE ;= expr
override VARIABLE ;= expr
เบเบตเปเปเบกเปเบเบเบทเบเบฑเบเบเบฑเบ "VARIABLE := expr" เบเบปเบเปเบงเบฑเปเบเบเปเบฒเบเบเบงเบฒเบกเบทเบเบทเบเบเบฐเปเบกเบตเบ
เบเบฝเบเปเบเปเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเบเปเบฒเปเบเปเบเบฑเปเบเบเปเบฒเบญเบดเบเปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบทเป. เบเบตเปเปเบกเปเบเปเบเบฑเบเบเบฐเปเบซเบเบเบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฒเปเบเบ
เบเปเบฒเบชเบฑเปเบ, เปเบเบดเปเบเบชเบฐเปเบซเบกเบตเบชเบปเปเบเบเบทเบเบเปเบฒเบเบฝเบงเบเบฑเบ, เปเบเปเบงเปเบฒเบเปเบฒเบเบเปเปเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบเบฐเบเบดเบเบฑเบเปเบเปเบงเบฅเบฒเบเบตเป
เบเบฒเบโเบเปเปโเบชเปเบฒเบโเปเบเบปเปเบฒโเบซเบกเบฒเบโเบเบตเปโเบเปเปโเบเปเบฝเบงโเบเปเบญเบโ:
VAR1 ;= $(เบเบฒเบเบเบณเบเบงเบเปเบเบเบซเบผเบฒเบ)
VAR2 ;= $(เบเบณเบชเบฑเปเบเบเบฒเบเบเบญเบเบเบญเบเปเบเบฐ)
เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒ makefiles เปเบเบปเปเบฒเบกเบฑเบเบเบฐเปเบเป ":=" เบเบตเปเบเบตเป, เบขเปเบฒเบเบซเบเปเบญเบเปเบฎเบฑเบเบญเบฑเบเบเบตเปเบเบฑเปเบเบเบฝเบง.
เปเบเปเบเบฑเบเบเบนเปเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบตเป, เบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบเปเปเปเบเป, เบเปเบฒเบเบฐเบเบธเบเบฑเบเบเปเบฒเบเปเบฎเบฑเบเบเปเปเปเบเป
เบเปเบญเบเบเบฒเบเบกเบนเบเบเปเบฒ. เบชเปเบฒเบฅเบฑเบเบเปเบฒเบเบตเปเบเบทเบเบฑเบเปเบเบซเบผเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบต, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป
เปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบตเปเบเบทเปเบกเบญเบตเบเบเปเบงเบ "เบเบปเปเบงเปเบฅเบ", เบเบถเบเบชเบฒเบซเบฒเบฅเบทเบเปเบฒเบเบฅเบธเปเบกเบเบตเป.
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบตเปเบเปเปเปเบกเปเบเบเบธเบเบเบฐเบชเบปเบเบเบตเปเบชเบฐเบซเบฅเบฒเบเบเบตเปเบเบฐเบเบฑเบเบเบฑเบเปเบซเปเบเปเบฒเบชเบฑเปเบเบเบญเบเบเบฒเบเบเบฐเปเบกเบตเบเบเบปเบ. เบเปเบฒ เบ
เบเบปเบงเปเบเบเบตเปเบเปเบฒเบเบปเบเปเบเบฑเปเบเบเบตเปเบเบฐเบเบญเบเบกเบตเบเปเบฒเบเบญเบเบเบปเบงเปเบเบญเบทเปเบ, เปเบฅเบฐเบเบปเบงเปเบเบญเบทเปเบ
เบกเบตเบกเบนเบเบเปเบฒเบชเบฐเปเบเบฒเบฐเปเบเบปเปเบฒเบซเบกเบฒเบ, เปเบฅเบฐเบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบงเบเปเบฒเบญเบดเบเปเบกเปเบเบชเปเบฒเบฅเบฑเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบฑเปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ
เบเปเบฒเบชเบฐเปเบเบฒเบฐเปเบเบปเปเบฒเปเบฒเบเบเบฐเบเบดเบเบขเบนเปเบเบฑเบเบเบธเบเบชเบฐเบเบฒเบเบเบฒเบเบญเบทเปเบเปเปเบเบฑเปเบเบเบฑเบ. เบเบตเปเปเบกเปเบ bug เปเบฅเบฐ
เบซเบงเบฑเบเบงเปเบฒเบเบฐเปเบเปเบฎเบฑเบเบเบฒเบเปเบเปเปเบเปเบเบญเบฐเบเบฒเบเบปเบ.
+=
VARIABLE += expr
override VARIABLE += expr
เบเบทเปเบกเบเปเปเบกเบนเบเปเบชเปเบชเบฐเบเบฃเบดเบเบเบฑเบเปเบเบทเปเบญเบซเบฒเบเปเบญเบเปเปเบฒเบเบญเบเบเบปเบงเปเบ, เปเบเบเบเปเบงเบเบเปเบญเบเบซเบงเปเบฒเบ. เบเปเบฒ
เบเบปเบงเปเบเปเบเปเบเบทเบเบกเบญเบเบซเบกเบฒเบเปเบเปเบกเบทเปเบญเบเปเบญเบเบเปเบงเบ ":=", เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบเบเปเบฒเบเบเบงเบฒเบกเบทเบเบฐเบเบทเบเบเบฐเปเบกเบตเบ
เบเปเบญเบโเบเบตเปโเบเบฐโเปเบเบตเปเบกโเปเบเบตเบกโ.
&=
VARIABLE &= expr
override VARIABLE &= expr
Prepends string เบเบฑเบเปเบเบทเปเบญเปเบเบเบตเปเบเปเบฒเบเบกเบฒเบเบญเบเบเบปเบงเปเบ, เปเบเบเบญเบญเบเปเบเบเบเปเบญเบ.
เบเปเบฒเบเบปเบงเปเบเปเบเปเบเบทเบเบกเบญเบเบซเบกเบฒเบเปเบเปเบกเบทเปเบญเบเปเบญเบเบเปเบงเบ ":=", เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เปเบเบทเปเบญเบเบเบงเบฒเปเบกเปเบ
เบเบฐเปเบกเบตเบเบเปเบญเบเบเบตเปเบเบฐเบเบทเปเบกเบเปเปเบกเบนเบเปเบชเป.
เบเบปเบงเบขเปเบฒเบเบซเบเบถเปเบเบงเบดเบเบตเบเบฒเบเบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒ "CFLAGS", เบญเบฑเบเปเบเบเปเปเบเบฒเบกเบเบตเปเบเบนเปเปเบเปเบญเบฒเบเบเบฐเปเบชเปเปเบ,
เบชเบฐเปเบซเบกเบตเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ "-Wall" เปเบกเปเบเบชเบญเบเปเบเบงเบเบตเป:
CFLAGS = -O2 # เบญเบฒเบเบเบฐ overridden เปเบเปเบเบงเบเปเบฒเบชเบฑเปเบ
override CFLAGS &= -Wall # prepended unconditionally
เปเบ makefiles เปเบเบปเปเบฒ, เบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเปเบฒเบเบเปเบญเบเปเบฎเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป, เปเบเบดเปเบเบกเบตเบเปเบฒเบ
เบเบปเบโเบเบฐโเบเบปเบโเบเบญเบโเบเบฒเบโเบเบฑเบโเบเบฑเบโเปเบซเปโเบเบฐโเปเบเบ ":=" เปเบเบทเปเบญโเบเปเบญเบโเบเบฑเบโเบเปเปโเปเบซเปโเบเบฒเบ recursion เบเปเปโเบชเบดเปเบโเบชเบธเบโ:
เบเบปเบงเบเปเบฝเบเปเบเป := expr $(เบเปเบฝเบเปเบเป)
?=
VARIABLE ?= expr
override VARIABLE ?= expr # เบเปเปเบกเบตเบเบฐเปเบซเบเบ, เปเบเปเบเบทเบเบเบปเบเปเบฒเบ
เบเปเบฒเบเบปเบเบเปเบฒเบเบญเบเบเบปเบงเปเบ, เปเบเปเบงเปเบฒเบเบฝเบเปเบเปเบเปเบฒเบเบปเบงเปเบเบเปเปเปเบเปเบฅเบฐเบเบธเปเบงเปเบเปเบญเบเบซเบเปเบฒ
makefile, เปเบเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบ, เบซเบผเบทเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก. เบเบฒเบเบกเบญเบเบซเบกเบฒเบเบเปเบฒเบเปเบเบดเบเบเบตเปเปเบกเปเบ
เปเบเบปเปเบฒเบเบฑเบ
ifndef เบชเบฒเบกเบฒเบเบเปเบฝเบเปเบเป
VARIABLE = expr
เบชเบดเปเบเบชเบธเบ
!=
VARIABLE != เบเบณเบชเบฑเปเบ shell
override VARIABLE != เบเบณเบชเบฑเปเบ shell
เปเบฅเปเบเบเบณเบชเบฑเปเบ Shell เปเบฅเบฐเบเบณเบเบปเบเบเบปเบงเปเบเปเบซเปเบกเบตเบเบปเบเบเบฐเบฅเบดเบเบกเบฒเบเบเบฐเบเบฒเบเบเบญเบเบเบณเบชเบฑเปเบ.
เบเบตเปโเปเบกเปเบโเปเบเปโเบเบฝเบโเปเบเบปเปเบฒโเบเบฑเบ
เบเบปเบงเบเปเบฝเบเปเบเป := $(เบเบณเบชเบฑเปเบเปเบเบฐ)
เบซเบผเบฒเบเปเบเบง เบเบปเบงเปเบ
เบเปเบฒเบเบฐเปเบซเบผเบเบเบตเป "เบเปเบฒเบเบปเบ" เปเบกเปเบเบซเบผเบฒเบเปเบชเบฑเปเบเบเบฝเบเปเบเบปเปเบฒเบเบญเบเบเปเบฒเบเบฐเปเบซเบผเบเบเบตเปเบเปเบฒเบเบเบฒเบเบเปเบฒเบเปเบเบดเบ. เปเบเป
operator เบซเบผเบฑเบเบเบฒเบเบเบปเบงเปเบเปเบกเปเบเบเบฒเบเปเบฅเบทเบญเบ. เบเปเบฒเบเบฒเบเบซเบฒเบเปเบ, เบกเบฑเบเปเบเบปเปเบฒเบเบฑเบ "เบเปเบฒเบเบปเบเบเบปเบงเปเบ
=" . "&=" เปเบฅเบฐ "+=" เปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบกเปเบเปเบเบเบเปเบฒเบเบเบฑเบเปเบฅเบฑเบเบเปเบญเบเบขเบนเปเบเบตเปเบเบตเป, เปเบเบเบฑเปเบเบเบงเบเบกเบฑเบเบเบฒเบงเปเบชเป
เบเปเบฒเปเบเบปเปเบฒเบเบฑเบเปเบเบงเปเปเป, เปเบเบเบเบตเปเบเบฐเปเบเบฑเบเบเปเบญเบเบซเบงเปเบฒเบ. เบเบฐเบเปเบญเบเบเปเปเบกเบตเบซเบเบฑเบเบเบปเบเปเบงเบฑเปเบ a
เบเปเบฒเบเบดเบเบเปเบฒเปเบซเบฑเบเบซเบผเบฑเบเบเบฒเบเบเปเบฒเบเบฐเปเบซเบผเบเบเบฒเบ, ie เบกเบนเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเปเบเปเบเบงเบเปเปเปเบ.
เบเปเบฒเบเบปเบเบเบปเบงเปเบ :=
เปเบเบงเบเบณเบญเบดเบเบเบญเบเบเปเบฒเบเบปเบงเปเบ
เปเบเบงเบเบตเบชเบญเบเบเบญเบเบเปเบฒเบเบญเบเบเบปเบงเปเบ
เปเบเบงเบเบตเบชเบฒเบกเบเบญเบเบเปเบฒเบเบปเบงเปเบ
เบชเบดเปเบเบชเบธเบ
override เบเปเบฒเบเบปเบ VARIABLE
...
enddef
เบเปเบฒเบชเปเบฒเบเบฑเบเบเปเบญเบเบเบตเปเบเบฐ "เบเปเบฒเบเบปเบ" เบชเบฒเบกเบฒเบเปเบเบฑเบเบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบเบญเบ "เบเบฒเบเบชเบปเปเบเบญเบญเบ" เบซเบผเบท "เบเบปเปเบงเปเบฅเบ" เปเบฅเบฐ
"เบเบปเบเปเบฅเบตเบ".
เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเปเบฒเบเบญเบเบเบปเบงเปเบเปเบเบทเปเบญเปเบซเปเบกเบตเปเบชเบฑเปเบเปเบซเบกเป, เบเปเบฒเบเบเปเบญเบเปเบเปเบเปเบฒเบเบฐเปเบซเบผเบเบเบตเป "เบเปเบฒเบเบปเบ" เปเบเบฑเบ
เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบ (เบซเบผเบทเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบซเบเบปเบเบเปเบฒเปเบเบเบเบปเบเปเบ Perl). ("endef" เบเบทเบเปเบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบ
เบเบงเบฒเบกเปเบเบปเปเบฒเบเบฑเบเปเบเปเบเบฑเบ GNU เปเบฎเบฑเบ. เบเปเบฒเบเบญเบฒเบเบเบฐเปเบเป "enddef".) เบเบตเปเปเบกเปเบเบเบฐเปเบซเบเบเบเบปเปเบเบเปเบชเปเบฒเบฅเบฑเบ
"เบฅเปเบฒเบเบฑเบเบเปเบฒเบชเบฑเปเบเบเบฐเบเปเบญเบ", เบเบปเบงเบขเปเบฒเบ, เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป:
เบเปเบฒเบเบปเบ COMPILE_C_PROGRAM
@&echo "เบเบฒเบเบฅเบงเบเบฅเบงเบก $(input)"
@$(CC) $(CFLAGS) $(CPPFLAGS) $(เบฅเบงเบกเบเบฑเบ) -c $(input) -o $(output)
เบชเบดเปเบเบชเบธเบ
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเบปเบงเปเบเบซเบผเบฒเบเปเบเบงเบเบตเปเปเบเบซเบผเบฒเบเบเบปเบเบฅเบฐเบเบฝเบ, เปเบเบฑเปเบเบเบตเป:
%.o : %.c
$(COMPILE_C_PROGRAM)
$(ARCH)/%.o : $(ARCH)/%.c
$(COMPILE_C_PROGRAM)
เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒเบเปเบฒเบเบกเบฑเบเบเบฐเบเบฑเบเบฅเบธเบเบปเบเบเบฝเบงเบเบฑเบเปเบเบเบเบฒเบเปเบเปเปเบเบทเปเบญเบเปเบฒเบเบเบธเบเปเบเบเปเบชเบฑเปเบเปเปเป,
เปเบเบฒเบฐเบงเปเบฒ shell เบเบตเบเบงเบฒเบกเปเบฒเบเบงเปเบฒเปเบเบฑเบเบเบปเบงเบเบฑเปเบเบเบณเบชเบฑเปเบเบเบทเบเบฑเบ. เบเบปเบโเบเบปเบงโเบขเปเบฒเบ,
COMPILE_C_PROGRAM = @echo "เบเบฒเบเบฅเบงเบเบฅเบงเบก $(input)"; \
$(CC) $(CFLAGS) $(CPPFLAGS) $(เบฅเบงเบกเบเบฑเบ) -c $(input) -o $(output)
เบเบฐเบกเบตเบเบปเบเบเบทเบเบฑเบ, เบเบปเบเปเบงเบฑเปเบเบงเปเบฒ semicolon เบเบฑเบเบเบฑเบ Perl เบเปเบฒเบเบกเบฑเบเปเบเบซเบฒเปเบเบฐ,
เปเบเบเบเบตเปเบเบฐเบเบฐเบเบดเบเบฑเบเบเปเบฒเบชเบฑเปเบเปเบเบเบเบปเบเปเบฅเบฐเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบซเบผเบฒเบเบเบถเปเบ. เบเบญเบเบเบฑเปเบเบเปเบฒเบเบเบฑเบเบเปเบญเบเปเบเปเปเบชเปเปเบเปเบฅเบฐเบเบปเบ
buildin เบขเบนเปเปเบเปเบชเบฑเปเบเบเบญเบเบเบปเบเปเบญเบ, เบเบถเปเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเปเบฒเบเบเปเบญเบเบชเบฐเบซเบผเบฑเบเบเบฑเบ echo เบเบฒเบเบเบญเบเปเบ
เบเปเบฅเบฐเบเบต semicolon.
เบกเบตเบเบงเบฒเบกเบเบดเปเบชเบเบซเบเบถเปเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฐเบซเบเบฒเบเบเบฒเบเปเบ "define", ie "define X :=" เบซเบผเบทเบเปเบฝเบงเบเบฑเบ a
เบเบปเบงเปเบเบเบตเปเปเบเบตเบเปเบเบฑเบ ":=", "define X &=" เปเบฅเบฐ "define X +=". เปเบเบเปเบฅเบฐเบเบตเบเบฑเปเบเบเปเบฒเบงเบเบตเป
"$(shell command ...)" เบซเบผเบท buildin "$(&command ...)" เบเปเปเปเบเปเบเปเบฝเบเบชเบฒเบเปเปเปเปเบเบฑเบ.
เบชเบฐเบเบฒเบเบเบตเป.
เบเบฒเบเบชเบปเปเบเบญเบญเบ เบเบปเบงเปเบ to เบเบฐเบเบงเบเบเบฒเบเบเปเบญเบ
เบชเบปเปเบเบญเบญเบ VAR ...
VAR = เบชเบปเปเบเบญเบญเบ
เบเบปเบเปเบฅเบตเบเบเบฒเบเบชเบปเปเบเบญเบญเบ VAR += เบเปเบฒ
เปเบเบเบเบญเบกเบเปเบฒเบญเบดเบเบซเบกเบฒเบเบเบปเบงเปเบเบเบตเปเปเบซเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบปเปเบเบญเบญเบเปเบเบเบฑเบเบเบฐเบเบงเบเบเบฒเบเบเปเบญเบ, เบกเบตเบกเบนเบเบเปเบฒเปเบเบเปเปเบเบฒเบก
เบเบปเบงเปเบเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบต. เบฎเบนเบเปเบเบเบเบตเบชเบญเบ, เปเบเบดเปเบเปเบเปเบเบฑเบเบเบปเบงเปเบเบซเบเบถเปเบเปเบเบปเปเบฒเบเบฑเปเบ, เบเบญเบเบเบฒเบเบเบฑเปเบ
เบเบณเบเบปเบเบเปเบฒเบเบฑเบเบเบต. เบเบฒเบเบเปเบฝเบเปเบเบเบเบฑเบเปเบปเบเบเบญเบเบเบฒเบเบกเบญเบเปเบฒเบเปเบกเปเบเบญเบฐเบเบธเบเบฒเบ.
เบเบฒเบเปเบเปเบเบเบฑเบ เบเบปเบงเปเบ เปเบเบเบปเปเบง makefiles
VAR เบเบปเปเบงเปเบฅเบ...
global VAR = เบเปเบฒ
เบฅเบปเบเบฅเปเบฒเบ VAR เบเบปเปเบงเปเบฅเบ &= เบเปเบฒ
เปเบเบเบเบญเบกเบเปเบฒเบญเบดเบเบซเบกเบฒเบเบเบปเบงเปเบเบเบตเปเปเบซเปเบกเบฒเปเบเบฑเบเบเบปเปเบงเปเบฅเบเบชเปเบฒเบฅเบฑเบ makefiles เบเบฑเบเบซเบกเบปเบ. เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเปเบเปโเบเบญเบโเปเบเบปเบฒโเปเบเบปเปเบฒโ
เบกเบตเบกเบนเบเบเปเบฒเปเบฅเปเบง, เบเปเบฒเบเบฑเปเบเบเบทเบเบเปเบฒเบเบเบฒเบเบเบปเบงเปเบเบเปเบญเบเบเบดเปเบ makefile เปเบเบชเบนเปเบเบปเปเบงเปเบฅเบ
เบซเบเบถเปเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบฐเปเบซเบผเบเบเบฒเบเบเบตเปเปเบกเปเบเปเบซเบฑเบ, makefiles เบญเบทเปเบเปเบกเบตเปเบฅเปเบง
เบกเบนเบเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเปเบเบญเบเบเบงเบเปเบเบปเบฒ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ makefiles เปเบซเบผเบปเปเบฒเบเบฑเปเบเบเบฐเบเปเปเปเบซเบฑเบเบเบปเปเบงเปเบฅเบ.
เบฎเบนเบเปเบเบเบเบตเบชเบญเบ, เปเบเบดเปเบเปเบเปเบเบฑเบเบเบปเบงเปเบเบญเบฑเบเบเบฝเบงเปเบเบปเปเบฒเบเบฑเปเบ, เบเบญเบเบเบฒเบเบเบฑเปเบเบเบฑเบเบเปเบฒเบเบปเบเบเปเบฒเบเบตเปเบเบทเบเบเปเบญเบ
เบซเปเบฒเบ. เบเบฒเบเบเปเบฝเบเปเบเบเบเบฑเบเปเบปเบเบเบญเบเบเบฒเบเบกเบญเบเปเบฒเบเปเบกเปเบเบญเบฐเบเบธเบเบฒเบ. เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒ ":=" เบเบฐเบเบฐเบซเบเบฒเบเบเบฑเบเบเบต
เบเบฑเบเบเปเบฒเปเบ makefile เบเปเบญเบเบเบดเปเบ. เปเบเบเบฒเบเบเบปเบเบเบฑเบเบเปเบฒเบก "=" เบเบปเบงเปเบเบเบฐเบเบฐเบซเบเบฒเบเปเบเบซเบฒ
เบเบธเบเบเปเบฒเบขเบนเปเปเบเบเบธเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเป.
เบเบปเบงเปเบเบเบปเปเบงเปเบฅเบเบชเบฒเบกเบฒเบเบเบฑเบเบเบฒเบเบเบฑเบเบเบฑเบเบซเบฒเปเบเปเบเบฒเบ, เปเบเบฒเบฐเบงเปเบฒ makepp เบญเบฒเบเบเบฐเปเบซเบผเบ makefiles เปเบเบญเบฑเบเปเบเบเปเปเปเบเป
เบเปเบฒเบชเบฑเปเบ, เบเบฒเบกเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบตเปเปเบเบตเบเบเบทเปเบเปเบเบเบฒเบเบเปเปเบชเปเบฒเบเบเบฒเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบเปเปเบกเบตเบเบปเบเบฅเบฐเบเบฝเบเบซเบผเบท makefiles เบเบทเบเปเบซเบฅเบ.
เบชเปเบฒเบฅเบฑเบเปเบซเบเบเบปเบเบเบตเป, เปเบเบฐเบเปเบฒเปเบซเปเบกเบต a RootMakeppfile เปเบฅเบฐเบเบฒเบเปเบซเบผเบเบเบฑเบเปเบปเบเบขเปเบฒเบเบเบฐเปเบเปเบ
เบญเบทเปเบเปเบเบตเปเบเบฑเบเปเบเบเบซเบผเบทเปเบเปเบเบปเบงเปเบเบเบตเปเบกเบต "load-makefile".
GLIBLIBS เบเบปเปเบงเปเบฅเบ ;= $(shell pkg-config --libs glib-2.0)
เบเบทเปเปเบงเปเบญเบตเบเบงเปเบฒเปเบเบเบเบฒเบเบเบญเบเปเบเบปเปเบฒเบญเบฒเบเบเบฐเบเบทเบเบชเปเบฒเบเปเบเบกเบทเปเปเบถเปเบเบฎเปเบงเบกเบเบฑเบเปเบเบเบเบฒเบเบญเบทเปเบเป. เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบตเป
เปเบซเบเบเบปเบเบกเบฑเบเปเบเปเบเบทเบเปเบเบฐเบเปเบฒเปเบซเปเบชเบฐเปเบซเบกเบตเปเบฎเบฑเบเปเบซเปเบเบทเปเปเบเบเบเบฒเบเปเบเบฑเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบเบเบทเปเบเบปเบงเปเบเบเบปเปเบงเปเบฅเบ.
เปเบเบปเปเบฒเปเบฒเบเบชเบฐเปเบเบฒเบฐ เบงเบฝเบเบกเบญเบ เปเบฒเบ
target: VARIABLE = string
target: VARIABLE := string
target: override VARIABLE += string
เบเปเบฒเบเบปเบเบเปเบฒเปเบเบปเปเบฒเบซเบกเบฒเบเบชเบฐเปเบเบฒเบฐเบเบญเบเบเบปเบงเปเบ. เบเปเบฒเบชเบฐเปเบเบฒเบฐเปเบเบปเปเบฒเปเบฒเบเปเบกเปเบเบกเบตเบเบปเบ เบเบฝเบเปเบเป
เปเบโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบตเปโเบเบฐโเบฅเบดเบโเปเบเปโเปเบเบปเปเบฒโเบซเบกเบฒเบโเบเบฑเปเบโเบเปเบฒเบงโเปเบเปโ. เบเบตเปเบเบทเบเบเปเบฒเปเบเปเบเบปเปเบเบเปเบชเปเบฒเบฅเบฑเบเบชเบดเปเบเบเปเบฒเบเปเปเบเบฑเปเบ
เบเบตเป:
CFLAGS := -O2
my_prog: file1.o file2.o special_file.o
special_file.o : CFLAGS := -g
%.o: %.c
$(CC) $(CFLAGS) -c $(input) -o $(output)
เบชเบดเปเบเบเบตเปเปเบเบตเบเบเบถเปเบเบเบตเปเปเบกเปเบเบงเปเบฒเปเบเบฅเป ".c" เบเบฑเบเบซเบกเบปเบเบเบฐเบเบทเบเบฅเบงเบเบฅเบงเบกเบเปเบงเบเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบ ("-O2") เบเบปเบเปเบงเบฑเปเบ
"special_file.c", เปเบเบดเปเบเบเบทเบเบฅเบงเบเบฅเบงเบกเปเบเบฎเบนเบเปเบเบเบเบตเบเบฑเบ ("-g"). เบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบตเปเบชเบฐเบเบงเบเบเบตเปเบเบฐ
เบฅเบฐเบเบธเบเบฒเบเปเบฅเบทเบญเบเบเบฒเบเบฅเบงเบเบฅเบงเบกเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฝเบเปเบเปเบชเบญเบเบชเบฒเบกเปเบเบฅเป.
เบเบฒเบเบกเบญเบเปเบฒเบเบเบปเบงเปเบเบชเบฐเปเบเบฒเบฐเปเบเบปเปเบฒเปเบฒเบเปเบเบเบเบตเปเบเบณเปเบเปเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเปเบเบปเปเบฒเบเบฑเปเบ; เปเบเบปเบฒเปเบเบปเปเบฒ
เบเปเปเบกเบตเบเบปเบเบเบฑเบเบเบฑเบเปเบเปเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเบเบฐเปเบกเบตเบเปเบเบปเปเบฒเบซเบกเบฒเบเบซเบผเบทเบเบงเบฒเบกเบเบถเปเบเบเบฑเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบ. เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเบปเบโเบฅเบฐโเบเบฝเบโ
เบกเบตเบซเบผเบฒเบเบเบงเปเบฒเบซเบเบถเปเบเปเบเบปเปเบฒเบซเบกเบฒเบ, เบเบฒเบเบกเบญเบเบซเบกเบฒเบเบเบปเบงเปเบเบชเบฐเปเบเบฒเบฐเปเบเบปเปเบฒเบซเบกเบฒเบเปเบกเปเบเบเบฐเบเบดเบเบฑเบเบเบฝเบเปเบเปเบเบฒเบ
เบเบฑเปเบเบเปเบฒเบญเบดเบ เปเบเบปเปเบฒโเบซเบกเบฒเบ. เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒเบเบปเบงเปเบเปเบเบปเปเบฒเบซเบกเบฒเบเบชเบฐเปเบเบฒเบฐเบเบญเบ makepp เปเบกเปเบเปเบเบเบเปเบฒเบเบเบฑเบเปเบฅเบฑเบเบเปเบญเบ
เบเบฒเบ GNU เปเบฎเบฑเบเปเบซเปเบเบงเบเปเบเบปเบฒเบเบฝเบเปเบเปเบเปเบฒเปเบเปเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบเบชเปเบฒเบฅเบฑเบเปเบญเบเบฐเบชเบฒเบเบซเบเบถเปเบเบเบตเปเปเบเปเบเปเบฒเบงเบกเบฒ, เปเบฅเบฐเบเปเปเปเบกเปเบ
เบฅเบธเปเบเบเปเบญเบเปเปเบฒเบญเบฑเบเปเบเบเปเปเบเป.
เบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบงเบเบญเบ Wildcard เปเบกเปเบเบเบฐเบเบดเบเบฑเบเบขเบนเปเปเบเปเบเบปเปเบฒเบซเบกเบฒเบ, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป:
test_*.o : CFLAGS += -DTEST
เบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเปเบเบปเปเบฒเบเบฑเบเปเบเปเบเบฑเบ GNU make, "%" เบญเบฒเบเบเบฐเบเบทเบเบเปเบฒเปเบเปเปเบเบ "*".
เบเบฒเบเบเปเบฝเบเปเบเบ เบเปเบฝเบเปเบเบ
เบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบเบปเบเปเบเบเบเบปเบงเปเบเบเบญเบ Makepp เปเบกเปเบเบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบเบเบฒเบเบเบฐเบฅเบดเบเบญเบทเปเบเป, เปเบเปเบเบฒเบเบขเปเบฒเบ
เบกเบตเบญเปเบฒเบเบฒเบเบซเบผเบฒเบ. เบเบฑเปเบเบเบตเปเปเบฎเบฑเบเบเบฑเบเปเบปเบ, "$(CC)" เบซเบผเบท "${CC}" เบเบฑเบเบชเบญเบเปเบเบฑเบเบเบปเบงเปเบเบเบเบญเบเบกเบนเบเบเปเบฒ
CC เบเปเบฝเบเปเบเบเปเบเป. เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบชเบฑเบเบเบฒเบฅเบฑเบเปเบเบดเบเปเบเบฅเบฒ, เปเบชเปเปเบเบทเปเบญเบเบซเบกเบฒเบเปเบเบดเบเปเบเบฅเบฒเบชเบญเบเปเบเบปเปเบฒ ($$), เปเบเบฑเปเบ
เบเบตเป:
เปเบเบปเปเบฒเปเบฒเบ: dep1 dep2 dep3 dep4
&rm -f $(เบเบปเบเบเบฐเบฅเบดเบ)
เบชเปเบฒเบฅเบฑเบเปเบเบฅเปเปเบ $(เบงเบฑเบเบชเบฐเบเบธเบเปเบญเบ); do cat $$file >> $(output); เบชเบณเปเบฅเบฑเบเปเบฅเปเบง
เบเบญเบเบเบฒเบเบเบฑเปเบ makepp เบกเบต syntax "$[VARIABLE]", เปเบเบดเปเบเปเบฎเบฑเบเบญเบฑเบเบเบฝเบงเบเบฑเบเบเบฑเบเบญเบฑเบเบญเบทเปเบ
เบชเบญเบ, เปเบเปเบเปเบญเบเบเบตเปเบเบฐ makepp groks เบซเบเบฑเบเบญเบตเบเปเบเป. เบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเปเบเปเบกเบฑเบเบชเปเบฒเบฅเบฑเบเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบชเบปเบกเบเบนเบ
เปเบฅเบฐ/เบซเบผเบทเปเบเบทเปเบญเบเปเบ:
เบเปเบฒเบเบปเบ bracket_rule =
ifdef SOME_VAR
เบงเบปเบเปเบฅเบฑเบ:
&echo เบเบตเปเปเบกเปเบเบเบปเบเบฅเบฐเบเบฝเบ -o $(output)
เบชเบดเปเบเบชเบธเบ
enddef
$[bracket_rule]
เปเบเบ rc เบเบฒเบเบเบปเบเปเบเบ
เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ, makepp เปเบเปเบเบฒเบเบเบปเบเปเบเบเปเบเบ rc (เปเบญเบตเปเบเบงเปเบฒเปเบเบฒเบฐเบงเปเบฒเบกเบฑเบเบเบทเบเบเบธเบเปเบเบตเบเปเบเบ
rc shell). เบเบตเปเปเบกเปเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบตเบเบตเปเบชเบธเบเปเบเบเบเบปเบงเบขเปเบฒเบ:
เปเบกเบเบนเบ = abcd
mylib.a : module_dir/$(MODULES).o $(OTHER_OBJECTS)
$(CXX) $(dependencies) -o $(เปเบเบปเปเบฒเปเบฒเบ)
เบเบณเบเบณเปเปเบฒ "module_dir/" เปเบกเปเบเบเบณเปเปเบฒเปเบชเปเปเบเปเบฅเบฐเบเบณเปเบ MODULES, เปเบฅเบฐเบเบณเบเปเปเบเปเบฒเบ ".o" เปเบกเปเบ
เบเบทเปเบกเปเบชเปเบเบฑเบเปเบเปเบฅเบฐเบเปเบฒ.
เบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบเปเบเบฒเบเบเบปเบเปเบเบเปเบเบ rc เปเบเบเบเปเปเบเปเบญเบเปเบชเปเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเปเบฒเบชเบฑเบเบเปเบฒเบเปเปเบเบปเปเบฒเปเบเปเบ a
เบเบปเบงเปเบ; syntax เปเบกเปเบ "$ (word1 word2)". เปเบซเปเบชเบฑเบเปเบเบเบเปเบญเบเบซเบงเปเบฒเบเบฅเบฐเบซเบงเปเบฒเบเบงเบปเบเปเบฅเบฑเบ เปเบฅเบฐ
เบเปเบฒเบเปเบฒเบญเบดเบ. เบเบฑเปเบเบเบฑเปเบเบเบปเบงเบขเปเบฒเบเบเปเบฒเบเปเบเบดเบเบชเบฒเบกเบฒเบเบเบทเบเบเบฝเบเปเบเบฑเบ:
mylib.a : module_dir/$( abcd).o $(OTHER_OBJECTS)
$(CXX) $(dependencies) -o $(เปเบเบปเปเบฒเปเบฒเบ)
เบเบปเบงเปเบเบเบฐเปเบซเปเบเบปเบงเบเปเบฝเบเปเบเบ rc เปเบเบปเปเบฒเบเบฑเปเบเปเบกเบทเปเบญเบกเบตเบซเบผเบฒเบเบเบงเปเบฒเปเบถเปเบเบเบณเปเบเบเบฑเปเบ.
เบเปเบงเบเบเปเบฒเบเบฝเบงเบกเบฑเบเบเปเบฒเบเบเบทเบเบฑเบเบเบฒเบเปเบฎเบฑเบเปเบเบเบเบฑเปเบเปเบเบตเบก. เบญเบฐเบเบดเบเบฒ, เปเบกเบทเปเบญเบเบปเบงเปเบเบซเบงเปเบฒเบเปเบเบปเปเบฒ, เบกเบต a
เบเปเปเบเบฑเบเปเบเปเบ. เปเบเบเบเบฑเปเบเปเบเบตเบกเปเบฎเบฑเบเปเบซเปเบเบฝเบเปเบเปเบเบฐเบซเบเบฒเบเบกเบฑเบเปเบเบซเบฒเบชเบฒเบเบเบตเปเบซเบงเปเบฒเบเปเบเบปเปเบฒ. เปเบเปโเปเบกเบทเปเบญโเบเบดเบโเปเบเบดเบ
เบกเบฑเบเปเบเบฑเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป, เบเปเบฒเบเบเปเบญเบเบเบฒเบ "-I$ (DIRLIST)" เบซเบฒเบเปเบ, เบเปเปเปเบซเป "-I". เปเบเป
เบเบฒเบโเปเบเปโเปเบโเปเบกเปเบโเบเบฒเบโเบซเปเปโเบกเบฑเบโเปเบเบปเปเบฒโเปเบโเปเบโเบเบฑเบโเบเบตโเบฅเบฒเบโเบเบฒเบโเบเบตเปโเปเบฅเบตเปเบกโเบเบปเปเบโเบเปเบงเบโเบเปเบญเบโเบซเบงเปเบฒเบโ: "-I$($(DIRLIST))" เปเบซเปโเบเปเบฒเบ
เปเบเปเบเบญเบเบงเปเบฒเบกเบตเบซเบผเบฒเบเบเบฒเบเปเบฅเบทเบญเบ, เบเปเบญเบเบงเปเบฒเบกเบตเบเปเบฒเบเบตเปเบขเบนเปเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป.
เบเปเบฒเบเปเบฒเบเปเบชเปเบเบปเบงเปเบเบซเบผเบฒเบเบญเบฑเบเปเบเบเปเบฒเบเบฝเบงเบเบฑเบเบเบตเปเบเบฐเบซเบเบฒเบเปเบเบชเบนเป array เบเบญเบเบเปเบฒเบชเบฑเบ, rc-style
เบเบฒเบเบเบปเบเปเบเบเบเบปเบงเบเบดเบเปเบเปเปเบงเบฅเบฒเบเบฐเบฅเบดเบเบเบฐเบเบฑเบ cartesian, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเปเบเปเบฒเบซเบฒเบเบงเปเบฒ
เปเบเบปเปเบฒโเบเปเบญเบโเบเบฒเบ:
DIRS = s1 s2
เปเบกเบเบนเบ = abc
SUFFIXES = .o .c
เปเบเบฅเป := $(DIRS)/$(MODULES)$(SUFFIXES)
เปเบฅเบฐ FILES เบเบฐเบกเบตเบชเบฐเบเบฃเบดเบ
s1/ao s1/ac s1/bo s1/bc s1/co s1/cc s2/ao s2/ac s2/bo s2/bc s2/co s2/cc
เบเบญเบเบเบฒเบเบเบทเปเบเบเบตเปเบชเบตเบเบฒเบง, เบเบฒเบเบเบปเบเปเบเบเปเบเบ rc เบเบฐเบขเบธเบเบขเบนเปเบเบตเปเบงเบปเบเบขเบทเบกเปเบเป, เบฎเบญเบเปเบ, curly เบซเบผเบทเบชเบตเปเบซเบฅเปเบฝเบก
เบงเบปเบเปเบฅเบฑเบ, เปเบฅเบฐเบญเบฑเบเปเบเบเบถเปเบเบเบญเบ ", : ; = # @". เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒเบเบตเปเบญเบฒเบเบเบฐเปเบเบเปเบ, เปเบฅเบฐเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบเบเปเบญเบเบเบฒเบ
เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเบเบฐเปเบเปเบ. เปเบงเบปเปเบฒเบงเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบญเบเบซเบฒเบชเปเบงเบเบซเบปเบงเปเบเบ wildcard เปเบเบเบธเบเปเบเปเบฅเบเบฐเบเปเบฅเบต
เปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเบเบปเบงเบเบดเบกเปเบซเบเป:
BAD := [AZ]*/**/*.$( hpp h) # [AZ]*/**/*.hpp */**/*.h
เบเบต := $( [AZ]*/**/*.)$( hpp h) # [AZ]*/**/*.hpp [AZ]*/**/*.h
เบเปเบฒเบเบฒเบเบเบปเบเปเบเบเปเบเบ rc เปเบเบปเปเบฒเปเบเปเบเบเบฒเบ, เบซเบผเบทเบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเปเบฒเบเบฒเบซเบผเบทเบเบดเบเบเบฒเบก
เบเปเบญเบเบซเบงเปเบฒเบเบขเบนเปเปเบเบเบปเบงเปเบเบเบญเบเบเปเบฒเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบดเบเบเบฒเบเบเบปเบเปเบเบเปเบเบ rc เปเบเบเบเบฒเบเบเบฑเปเบเบเปเบฒ
เบเบปเบงเปเบ "makepp_simple_concatenation=1". เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบดเบเบกเบฑเบเปเบเปเบเบปเปเบงเปเบฅเบเปเบเบเปเบฒเบชเบฑเปเบ
เปเบชเบฑเปเบเบซเบผเบทเปเบเบฑเบเบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก. เบซเบผเบทเบเบปเบเบเบทเปเบเบเบฒเบ per-makefile เปเบเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบปเบงเปเบเปเบ
makefile เบเบญเบโเบเปเบฒเบโ. เบเปเบฒเบเบเบงเบเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเบขเบนเปเปเบเปเบเบฑเบเบเปเบฒเบเปเบเบดเบเบเบญเบ makefile, เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบญเบฒเบเบเบฐเปเบฅเปเบเปเบเบปเปเบฒเปเบเปเบ
เบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบฐเบซเบฅเบปเบเบเบตเปเบเบฒเบเบเบปเบเปเบเบเปเบเบ rc เบเบทเบเบเปเบฒเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเปเบกเบตเบเบเบปเบเบเบฒเบเบขเปเบฒเบเปเบฅเบฐเบเปเปเปเบกเปเบเบชเบดเปเบเบญเบทเปเบเป.
(เบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบฑเบเปเบปเบเบเบตเปเบเบทเบเบเบฐเปเบกเบตเบเบเปเบญเบเบเบฒเบเบกเบญเบเปเบฒเบเบเบฐเปเบเปเบเบฒเบเบเบปเบเปเบเบเปเบเบ rc, เปเบฅเบฐเบเบฑเบเปเบปเบ
เบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบตเปเบเบทเบเบเบฐเปเบกเบตเบเบซเบผเบฑเบเบเบฒเบเบเบฐเบเปเป. เบเบฑเบเบเบฑเปเบเปเบเปเปเบงเบฅเบฒเบเบญเบเบเบฒเบเบเบฐเปเบกเบตเบเบเบปเบเบเบญเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเปเบ
makefiles เปเบกเปเบเบชเบฑเบเบชเบปเบเปเบฅเบฐเบเปเปเบเบฐเปเบเปเบเบชเบฐ เปเปเบต เปเบเบเบฒเบเบเปเบฒเบชเบฑเปเบเบเบญเบเบเบฐเปเบซเบผเบเบเบฒเบเปเบ
makefile, เบกเบฑเบเบเบตเบเบตเปเบชเบธเบเบเบตเปเบเบฐเบเบฑเปเบ "makepp_simple_concatenation" เปเบงเปเบเบปเปเบฒเบเบตเปเบเบฐเปเบงเปเบเป.) เปเบเบปเปเบฒเบชเบฒเบกเบฒเบ
เปเบเบดเบเปเบกเปเบเบเบฑเปเบเบกเบฑเบเปเบงเปเบเบฝเบเปเบเบปเปเบฒเปเบฒเบเบเบฝเบงเปเบเบปเปเบฒเบเบฑเปเบ:
เปเบเบปเปเบฒเปเบฒเบ: makepp_simple_concatenation = 1
เปเบเบปเปเบฒโเบซเบกเบฒเบ:
&echo before_first$(LIST)after_last -o $(output)
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ "$[VARIABLE]" เบเบทเบเบเบฐเปเบกเบตเบเปเบงเบเบงเปเบฒ "$(VARIABLE)", เบชเบปเบกเบเบปเบเบชเบญเบเบญเบฑเบเปเบ rc-
เบเบฒเบเบเบปเบเปเบเบเบเบฐเบเปเปเปเบซเปเบเบปเบเปเบเปเบฎเบฑเบเบเบตเปเบเปเบฒเบเบญเบฒเบเบเบฐเบเบฒเบเบซเบงเบฑเบ, เปเบงเบฑเปเบเปเบชเบเปเบเปเบงเปเบฒเบเปเบฒเบเบซเปเปเบกเบฑเบเบขเปเบฒเบเบเบฐเปเบเปเบ
เบฅเบฒเบเบเบทเป:
A = ab
N = 1 2
เบเปเปเบเบต := $(A)$[N]
เบเบต := $(A)$($[N])
เปเบชเบฑเปเบเบชเบธเบเบเปเบฒเบเปเบเปเบฎเบฑเบเบเบฒเบเบญเปเบฒเบเปเบเบฑเบ
BAD := $(A)1 2 # a1 b1 2
เบเบต := $(A)$( 1 2) # a1 a2 b1 b2
เบเปเบฝเบเปเบเบ เปเบญเบเบฐเบชเบฒเบ
เบเบฒเบเบญเปเบฒเบเบญเบตเบเบเบฒเบเบเบปเบเปเบเบเบกเบตเบฎเบนเบเปเบเบ "$(VAR:A=B)", เปเบเบดเปเบ A เปเบกเปเบเบฎเบนเบเปเบเบเบเบตเปเบเบปเบเบเบฑเบ เปเบฅเบฐ B เปเบกเปเบ
เบฎเบนเบเปเบเบเปเบเบทเปเบญเบเบปเบเปเบเบเบกเบฑเบ. เบเบฒเบเบญเปเบฒเบเบญเบตเบเบเบฒเบเบเบปเบเปเบเบเปเบกเปเบเบเบปเบงเบซเบเปเปเบเบญเบ
เบเบฑเบเบเบฑเบ "patsubst". เบเบปเบโเบเบปเบงโเบขเปเบฒเบ:
source_files = ac bc cc dc
object_files = $(source_files:%.c=%.o)
เบเบฐเบเบฑเปเบ "$(object_files)" เปเบเบฑเบ "ao bo co do". "%" เปเบกเปเบเบเบฒเบเบเบฑเบเบเบนเปเบเบปเบงเบญเบฑเบเบชเบญเบเบเบดเปเบชเบ
เบชเบฐเบเบดเบเบเบตเปเบกเบฑเบ. เบเปเบฒเบเบฑเบเบชเบญเบ A เปเบฅเบฐ B เปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ "%", เปเบเบฑเบเบเปเบฅเบฐเบเบตเบเบปเปเบงเปเบเปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฝเบเปเบเบ
เบเปเบฒเบเปเปเบเปเบฒเบ, เบเบงเบเปเบเบปเบฒเบชเบฒเบกเบฒเบเบเบทเบเบเบปเบเปเบงเบฑเปเบ:
object_files = $(source_files:.c=.o)
object_files = $(source_files:c=o) # เบญเบฑเบเบเบฝเบงเบเบฑเบ, เปเบเบฒเบฐเบงเปเบฒ . เบเปเปเปเบกเปเบเบเบดเปเบชเบ
Whitespace in เบเบปเบงเปเบ
เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบงเบเบเบธเบกเบเบทเปเบเบเบตเปเบซเบงเปเบฒเบเบขเบนเปเปเบเบเบปเบงเปเบ, เบเปเบฒเบเบเปเบญเบ (เบเบฐเบเบธเบเบฑเบ) เบเบดเบเบเบฒเบเปเบเปเบเบฒเบ rc-style
เบเบฒเบเบเบปเบเปเบเบ (เปเบเบเบเบฒเบเบเบฑเปเบเบเปเบฒ "makepp_simple_concatenation=1") เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเป syntax เปเบเบเบเบตเป:
null =
T = -o $(null)
เบซเบผเบท, เบเปเบงเบเบเบฒเบเบเบฐเปเบกเบตเบเบซเบงเปเบฒเบเปเบเบปเปเบฒ:
T = -o $()
เปเบกเบทเปเบญเบเปเบฒเบเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเบปเบงเปเบ "T" เบกเบต "-o" เบเบดเบเบเบฒเบกเบเปเบงเบเบเปเบญเบเบซเบงเปเบฒเบ.
เปเบเบฑเบเบเบดเบเบเบฐเปเบเบเบเบตเปเปเบเบทเปเบญเบเบฑเบเบเบฒเบเบเบทเปเบเบเบตเปเบเบฒเบงเปเบกเปเบเบเปเปเปเบเบฐเบเปเบฒ. เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบปเบงเปเบ
เปเบ makefile เบเบญเบเบเปเบฒเบเปเบเบทเปเบญเบเบฑเบเบเบธเบเปเบญเบเบซเบงเปเบฒเบ, เบเปเบฒเบเบเบงเบเบเบดเบเบขเปเบฒเบเบเบดเบเบเบฑเบเบเปเบฝเบงเบเบฑเบเบชเบดเปเบเบเบตเปเบเปเบฒเบเบเปเบฒเบฅเบฑเบเปเบฎเบฑเบ.
เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบฑเบเบเบฒเบเบเปเบญเบเบซเบงเปเบฒเบ, เบกเบฑเบเบกเบฑเบเบเบฐเบเบตเบเบงเปเบฒเบเบตเปเบเบฐเปเบชเปเบฅเบฐเบซเบฑเบ Perl เปเบเบปเปเบฒเปเบเปเบเบเบญเบเบเปเบฒเบ
makefile เปเบเบทเปเบญเปเบเบดเปเบเปเบเบเบกเบฑเบ (เปเบเป "perl_begin" เบซเบผเบท "sub" เบเบฐเปเบซเบผเบเบเบฒเบ), เบซเบผเบทเปเบเบทเปเบญเบเบฑเบเบเบฒเบเบเบฑเบเบกเบฑเบ.
เปเบโเบเปเบฒโเบเบฐโเปเบซเบผเบโเบเบญเบ shell เปเบโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบญเบโเบเบปเบโเบฅเบฐโเบเบฝเบโ.
เบเปเบฅเบฐเบเบตเปเบซเบผเบปเปเบฒเบเบตเปเบกเบฑเบเบเบฐเปเบเบตเบเบเบถเปเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฐเบเบฒเบเบปเบเบเบฐเบเบฒเบเบฒเบกเปเบเปเบเบปเบเบฅเบฐเบเบฝเบเบเบฝเบงเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบเบเปเบฒเบเบเบฑเบ
เบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบตเปเบเปเปเปเบเป syntax เบเปเบฒเบชเบฑเปเบ Unix เบเบปเบเบเบฐเบเบด. เบเบปเบงเบขเปเบฒเบ, เบเบฒเบเบเบฑเปเบเบเบปเบเบซเบเบถเปเบเปเบซเบฑเบ
เบชเบดเปเบเบเปเบฒเบเปเปเบเบฑเปเบเบเบตเปเปเบ makefiles:
ifeq ($(ARCH), เบญเบฑเบเบชเบฐเบเบฑเบ)
O := /OUTPUT=
เบญเบทเปเบ
null :=
O := -o $(null)
เบชเบดเปเบเบชเบธเบ
%.o : %.c
$(COMPILER) $(input) $(O)$(output)
เปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเบเบฑเบ makepp เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบเปเป, เปเบเปเปเบเบปเปเบฒเบญเบฒเบเบเบฐเบเบปเบเบงเปเบฒเบเบญเบเปเบเบปเปเบฒ
makefiles เปเบกเปเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเปเบซเบผเบฒเบเบเปเบฒเบเปเบฒเบเบกเบตเบเบปเบงเปเบเบเบตเปเบชเบฑเบเบชเบปเบเบซเบเปเบญเบ
เบเบฒเบเบเบปเบเปเบเบ, เบเบปเบงเบขเปเบฒเบ,
ifeq ($(ARCH), เบญเบฑเบเบชเบฐเบเบฑเบ)
%.o : %.c
$(WEIRD_COMPILER) $(input) /OUTPUT=$(output)
เบญเบทเปเบ
%.o : %.c
$(CC) -c $(input) -o $(output)
เบชเบดเปเบเบชเบธเบ
Whitespace เบเปเปเปเบเบตเบเบเบทเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเบขเบนเปเปเบเบเบทเปเบเบปเบงเปเบ, เบเบฝเบเปเบเปเบขเบนเปเปเบเบเปเบฒเบเบญเบเบเบงเบเบกเบฑเบ. เบเบตเปเปเบกเปเบเปเบเบเบเปเบฒเบเบเบฑเบ
เบเบฒเบเบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบญเบฑเบ.
เบญเบฑเบเบเบฐเปเบเบกเบฑเบ Variables
เบเบปเบงเปเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบกเปเบเบเบปเบงเปเบเบเบตเปเบชเบปเบกเบกเบธเบเบงเปเบฒเบเปเบฒเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเบถเปเบเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบเปเบ
เปเบเบปเบฒเปเบเบปเปเบฒเปเบเปเบเบทเบเบเบฐเปเบกเบตเบเปเบ. Makepp เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบปเบงเปเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบชเปเบงเบเปเบซเบเปเบเบตเปเบญเบทเปเบเป
เบชเบฐโเบเบฑเบโเบเบญเบโเบเบฒเบโเบเปเบฒโเปเบเปโ. เบเบญเบเบเบฒเบเบเบฑเปเบ, เบกเบฑเบเบกเบตเบฅเบฐเบซเบฑเบเบฅเบฑเบเบซเบเปเบญเบ, เบเบทเปเบเบฒเบงเบชเปเบฒเบฅเบฑเบเบเบงเบเปเบเบปเบฒเบชเปเบงเบเปเบซเบเป
เบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเปเบเบ. (เบชเปเบฒเบฅเบฑเบ makefiles เบกเปเบฅเบฐเบเบปเบเบเบตเปเปเบเบตเบเบเบถเปเบเบเบฑเบ redefine เบเบทเปเปเบซเบผเบปเปเบฒเบเบตเป, เปเบเป
เบเปเบฒเบเบดเบเบฒเบกเปเบ makefile overrides เบเบงเบฒเบกเบซเบกเบฒเบเปเบฅเบตเปเบกเบเบปเปเบ. เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเปเบเบปเปเบฒเปเบงเบปเปเบฒ
"target = abc" เปเบ makefile เบเบญเบเบเปเบฒเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ "$(target)" เบชเบฐเปเบซเบกเบตเบเบฐเบเบฐเบซเบเบฒเบเปเบ "abc", เปเบฅเบฐเบเบฐเบเปเป.
เบเบฒเบงเปเบเบปเปเบฒเบเบฑเบ $@.)
เบเปเปเปเบเบเบตเปเปเบกเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเปเบเบฑเบกเบเบญเบเบเบปเบงเปเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบฑเบเบซเบกเบปเบเบเบตเป makepp เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ:
output
เปเบเบปเปเบฒโเบซเบกเบฒเบ
$@ เปเบเบปเปเบฒเบซเบกเบฒเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเปเบเบเบฐเบเบธเบเบฑเบ. เบเบปเบงเบเบดเบเปเบฅเปเบง, เบเบฑเบเบเบฑเปเบเปเบเป makepp เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเปเบเบปเปเบฒเบซเบกเบฒเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบ
เบเบปเบเบฅเบฐเบเบฝเบเปเบเบเปเปเบเบฒเบก, เบเบตเปเปเบกเปเบ เบเบฑเปเบเบเปเบฒเบญเบดเบ เปเบเบปเปเบฒโเบซเบกเบฒเบ. เบเบปเบงเบขเปเบฒเบ, เปเบเบเบปเบเบฅเบฐเบเบฝเบเบเปเปเปเบเบเบตเป
y.tab.c y.tab.h : parser.y
$(YACC) -o $(output) $(YFLAGS) $(input)
"$(output)" เบเบฐเบกเบตเบเปเบฒ y.tab.c. เบเบฑเบเบเบฑเปเบเปเบเปเบเบปเบงเปเบ magic เปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเบขเบนเปเปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ
เบซเบเปเบฒเบเบตเป, เบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบเบฑเบเบชเบฐเบเบตเปเบเบฑเบเบเบฒเบเปเบเปเบเบฝเบ. เบญเบฑเบเบเบตเปเบเบฑเบเบเบฒเบ 1 เบซเบผเบท เบเบญเบเบซเบผเบฑเบ
เบเบฒเบ -1. เบเบฑเปเบเบเบฑเปเบ "$(output 2)" เบซเบผเบท "$(output -1)" เบเบฐเบกเบตเบเปเบฒ y.tab.h.
เปเบเบเบฐเบเบฐเบเบตเปเบเบฑเบเบชเบฒเบกเบฎเบนเบเปเบเบเบเบญเบเบเบปเบงเปเบเบเบตเปเบกเบตเบกเบนเบเบเปเบฒเบเบฝเบงเบเบฑเบ, เบกเบตเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบฑเบเปเบ
เบเบฒเบเบเบตเบเบงเบฒเบกเปเบฒเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเบซเบผเบฒเบเปเบเบปเปเบฒเปเบฒเบ. เบเปเบฒเบเปเบฒเบเปเบเปเบเบทเปเบฅเบฐเบซเบฑเบเบฅเบฑเบเปเบเบเปเบเบปเปเบฒ $@,
makepp เบเบฐเบเบตเบเบงเบฒเบกเบซเบกเบฒเบเบงเปเบฒเปเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบเปเบเบเปเบเบปเปเบฒ, เปเบเบเบเบตเปเบเบฐเปเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบเบฑเบเบชเบฐเปเบซเบก
เบเบฐเบฅเบดเบเปเบเบปเปเบฒเบซเบกเบฒเบเปเบซเบผเบปเปเบฒเบเบฑเปเบเบเบฑเบเบซเบกเบปเบเปเบเบซเบเบถเปเบเปเบ:
ab: # เปเบเปเป: เบเบปเบเบฅเบฐเบเบฝเบเบซเบเบถเปเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐ a เปเบฅเบฐ b
เปเบเบฐ $@
cd: # error: mpp เบเบปเปเบกเบงเปเบฒเบเบตเปเบเปเปเปเบเปเบชเปเบฒเบ d
เปเบเบฐ $(เบญเบญเบ)
เบเบปเบเปเบเปเบฎเบฑเบ
เปเบเบปเปเบฒเบซเบกเบฒเบ
เปเบเบปเปเบฒเบซเบกเบฒเบเบเบฑเบเบซเบกเบปเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเปเบเบเบฐเบเบธเบเบฑเบ. เบเบทเบเบฑเบเบเบฑเบ "$(เปเบเบปเปเบฒเปเบฒเบ)" เปเบงเบฑเปเบเปเบชเบเปเบเปเบกเบตเบซเบผเบฒเบเบเบงเปเบฒเปเบถเปเบ
เปเบเบปเปเบฒโเบซเบกเบฒเบ. เปเบเบเบปเบงเบขเปเบฒเบเบเปเบฒเบเปเบเบดเบ, "$(outputs)" เบเบฐเปเบเบฑเบ y.tab.c y.tab.h. เปเบเบปเปเบฒเบชเบฒเบกเบฒเบเบเปเบฒเบเปเบเป
เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฑเบเบชเบฐเบเบต, เบเบฑเปเบเบเบฑเปเบ "$(outputs 2 1)" เบเบฐเปเบเบฑเบ y.tab.h y.tab.c.
เบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบช
เบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ
$< เบเบฒเบเบเบถเปเบเบเบฑเบเบขเปเบฒเบเบเบฐเปเบเปเบเบเบณเบญเบดเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบ. เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เปเบเบเบปเบเบฅเบฐเบเบฝเบเบเบตเป
%.o : %.c
$(CC) $(CFLAGS) -c $(input) -o $(output)
"$(input)" เบเบฐเปเบเบฑเบเบเบทเปเบเบญเบ .c เปเบเบฅเป, เบเปเปเบงเปเบฒเบเบฐเปเบเบฑเบเบญเบฑเบเปเบ .h เปเบเบฅเป makepp
เบเบปเปเบเบเบปเบ. เบเปเบฒเปเบเบปเปเบฒเบฅเบฐเบเบธเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเบซเบผเบฒเบเบเบงเปเบฒเปเบถเปเบเบญเบฑเบ, เปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบญเบปเบฒเบเบงเบเบกเบฑเบเปเบเปเปเบเบเบเบฒเบเบเปเบฒเบเบเบญเบ
index: "$(input $(INDEX))" เปเบกเปเบ INDEXth dependency.
dependencies
เบงเบฑเบเบชเบฐเบเบธเบเปเบญเบ
$^ เบเบฑเบเปเบปเบเบเบฒเบเบเบถเปเบเบเบฑเบเบขเปเบฒเบเบเบฑเบเปเบเบเบเบญเบเปเบเบปเปเบฒเปเบฒเบ, เบเปเปเบฅเบงเบกเปเบญเบปเบฒ .h เปเบเบฅเปเบเบตเปเบเบปเปเบเบเบปเบเปเบเบ
makepp_scanning เบเบฐเบเบญเบเบกเบต.
เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เปเบเบเบปเบเบฅเบฐเบเบฝเบ
myprog.o : *.o
$(CC) $(CFLAGS) $(inputs) -o $(output)
"$(inputs)" เบเบฐเปเบเบฑเบเปเบเบฅเป .o เบเบฑเบเปเบปเบเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบต. เปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบฅเบทเบญเบเปเบเปเบชเบฐเปเบเบฒเบฐเบเบปเบงเปเบเบปเปเบฒเปเบเบปเปเบฒเบเบฑเปเบ
เบเปเบญเบเบเบฒเบเปเบเบเบเบฒเบเบเปเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฑเบเบชเบฐเบเบต. เบเปเบฒเปเบเบปเปเบฒเบฅเบฐเบเบธเปเบเบฅเปเบเบฐเปเบเบเบเปเบฒเบเปเบขเปเบฒเบเบเบฐเปเบเปเบ,
เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเปเบฅเบทเบญเบโเปเบญเบปเบฒโเปเบซเปโเปเบเบปเบฒโเปเบเบปเปเบฒโเปเบ "$(inputs 2 3 4)" (เปเบเปโเบงเปเบฒโเบเปเบงเบโเบเบปเบงโเปเบเบโเบเบตเปโเบเบตเปโเบเปเปโเปเบกเปเบโเปเบเบตเบโเปเบโ.
เบชเบฑเบเบเบฒ).
sorted_dependencies
sorted_inputs
$+ เบเบงเบฒเบกเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเบเบฑเบเปเบปเบเบเบญเบเปเบเบปเปเบฒเปเบฒเบ, เปเบเบเบฒเบเบเบฑเบเบฎเบฝเบเบเบฒเบกเบฅเบณเบเบฑเบ, เบเปเบงเบเบเบฒเบเบฅเบถเบเบชเบดเปเบเบเบตเปเบเปเบณเบเบฑเบเบญเบญเบ.
เปเบเบปเปเบฒเบเบฑเบ "$(sort $(inputs))".
change_dependencies
change_inputs
$? เบเบงเบฒเบกเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเบเบญเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบ. เบเบตเปเบเบฐเบเบญเบเบกเบตเบเบฝเบเปเบเปเบเบฐเปเบเปเบ
เบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบช (เปเบเบฑเปเบ, เบญเบฑเบเบเบตเปเบเปเบฒเบเบฅเบฐเบเบธเปเบงเปเปเบ makefile), เบเปเปเปเบเปเบเบปเปเบเบเบปเบ implicitly
เบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเบเบฒเบเบเบฒเบเบชเบฐเปเบเบ (เปเบเบฑเปเบ: เปเบเบฅเป .h).
เบเบตเปเปเบกเปเบเปเบเปเบเบปเปเบงเปเบเปเบเบเปเบฒเบชเบฑเปเบเปเบเบฑเปเบเบเบตเป:
libmine.a : $(MODULES): build_check ignore_action
$(AR) ru $@ $?
เปเบเบฑเปเบ, ar เบเบทเบเบเบญเบเปเบซเปเบเปเบฝเบเปเบเบเบเบฝเบเปเบเปเปเบกเบเบนเบเบเบตเปเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบ. (เบซเบกเบฒเบเปเบซเบ
"ignore_action" เบชเปเบฒเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบเบงเบเบชเบญเบ. เบเปเบฒเปเบเบปเปเบฒเบเปเปเบฅเบฐเบเบธเบญเบฑเบเบเบตเป, makepp เบเบฐเบเบฑเบเบเบฑเบเปเบซเป
เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบเบเบธเบเบเบฑเปเบเบเบตเปเบกเบฑเบเบเปเบฝเบเปเบเบ. เบเปเบฒเบเปเปเบกเบตเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบ, the
เบชเบฐเบเบดเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฐเปเบเบฑเบ "ar ru libmine.a" เปเบเบดเปเบเบญเบฒเบเบเบฐเปเบเบเบเปเบฒเบเบเบฒเบเบชเบดเปเบเบเบตเปเบกเบฑเบเปเบกเปเบ
เบเบฑเปเบเบชเบธเบเบเปเบฒเบเบเบตเปเบเปเบฒเบเปเบฅเปเบเบกเบฑเบ, เบเบฑเปเบเบเบฑเปเบเปเบเบเบเปเปเบกเบตเบเบฒเบ "ignore_action" makepp เบเบฐเบเบฐเบเบดเบเบฑเบเบกเบฑเบ. เปเบโเบเบตเป
เบเปเบฅเบฐเบเบต, เบกเบฑเบเบเปเปเปเบเบฑเบเบญเบฑเบเบเบฐเบฅเบฒเบ, เปเบเปเบเบฑเบเบเปเบฒเบชเบฑเปเบเบญเบทเปเบเป, เบกเบฑเบเบญเบฒเบเบเบฐเบกเบตเบเบฑเบเบซเบฒ. เปเบเบดเปเบ
makepp_build_check เบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเปเบฝเบงเบเบฑเบ "ignore_action".)
เบเบฒเบเบชเปเบฒเบเบเบฑเบเปเบเบฑเบเบเปเปเบกเบนเบเปเบเบเบเบตเปเบเปเปเปเบกเปเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบเบตเปเบเบฒเบฐเบกเบฑเบเบเบฐเปเบฎเบฑเบเปเบซเปเบเบฒเบเบเปเปเบชเปเบฒเบเบเบญเบเปเบเบปเปเบฒเบเปเบญเบเบฅเบปเบ
เปเบเบทเปเบญเบเบทเปเบเป. เบเบฑเบเบซเบฒเบเบตเปเปเบกเปเบเบงเปเบฒเบเปเบฒเบเปเบฒเบเบชเปเบฒเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบญเบปเบฒเบซเบเบถเปเบเบเบญเบ
เปเบกเบเบนเบเบเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบ MODULES, เปเบกเบเบนเบเบเบฐเบเบฑเบเบเบปเบเบขเบนเปเปเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเปเบฅเบฐ
เปเบเปเบเปเปเบฒ
เบเบปเปเบเบเปเบฒเปเบเบตเบ
$* เบฅเบณเบเบปเปเบเปเบเบเบปเบเบฅเบฐเบเบฝเบเบฎเบนเบเปเบเบ (เปเบเบฑเปเบเบงเปเบฒ '%' เบเบปเบเบเบฑเบเบญเบฑเบเปเบเบเปเปเบเบฒเบก). เบญเบตเบเบเบฒเบเปเบฅเบทเบญเบ, เบเปเบฒเบเบตเป
เบเปเปเปเบกเปเบเบเบปเบเบฅเบฐเบเบฝเบเบฎเบนเบเปเบเบ, เบชเบปเปเบเบเบทเบเบเบทเปเปเบเบฅเปเปเบเบเบเปเปเบกเบตเบเบฒเบเบเบฐเบซเบเบฒเบ (ie, เบกเบฑเบเปเบเบฑเบ
เปเบเบปเปเบฒเบเบฑเบ "$(basename $(input))".
เบเบตเปเปเบกเปเบเบชเปเบงเบเปเบซเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบปเปเบฒเบเบฑเบเปเบเปเปเบเบเปเบฒเบเบซเบฅเบฑเบ. เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เปเบเบชเบฐเบเบฑเบเปเบเบปเปเบฒเบเบญเบ make the
เบงเบดเบเบตเบเบฝเบงเบเบตเปเบเบฐเบเบญเบเบงเบดเบเบตเบเบฒเบเบฅเบงเบเบฅเบงเบกเบเปเปเบกเบนเบเปเบเป .c เปเบเบฅเปเปเบเบปเปเบฒเปเบเปเบเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบ .o เปเบเบฅเปเปเบกเปเบเบเปเบฒเบเบเบท
เบเบตเป:
.co:
$(CC) $(CFLAGS) -c $*.c -o $*.o
เบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบตเปเบเบตเปเบเบปเบงเบฐเบเบตเปเบเบฐเบเบฝเบเบเบปเบเบฅเบฐเบเบฝเบ. เบกเบฑเบเบเบฐเปเบเปเบเบเบงเปเบฒเบเบตเปเบเบฐเปเบเปเปเบเบ GNU-make
เบเบปเบโเบฅเบฐโเบเบฝเบโเบฎเบนเบโเปเบเบโเบเบตเปโ:
%.o : %.c
$(CC) $(CFLAGS) -c $(input) -o $(output)
foreach
เบเบทเปเปเบเบฅเปเบเบฑเบเบเบธเบเบฑเบเบเบฒเบเบเบฐเปเบซเบเบ "foreach". เบเบฐเปเบซเบเบ "foreach" เปเบกเปเบเบเปเปเบเปเบญเบเปเบเปเปเบเป,
เปเบเปเบเบงเบเบกเบฑเบเปเบเบฑเบเบเบฐเปเบเบเบเบตเปเบกเบตเบเบธเบเบเบฐเบชเบปเบเบเบปเปเบงเปเบเบเบตเปเบชเบธเบเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเบฎเบนเบเปเบเบเบเบตเป makepp เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ. เบชเปเบฒเบฅเบฑเบ
เบเบปเบเบเบปเบงเบขเปเบฒเบ,
#
# เบชเปเบฒเบเปเบเบฅเป .c เบเปเบงเบเปเบเบทเปเบญเบเบเบฐเบกเบงเบเบเบปเบเบเบดเปเบชเบเบเบฒเบเบเบฐเปเบเบ:
#
%.c : %.k
$(preprocessor) $(input) > $(output)
#
# เบฅเบงเบเบฅเบงเบกเปเบเบฅเป .c เปเบเบฑเบเปเบเบฅเป .o:
#
%.o : %.c
$(CC) $(CFLAGS) -c $(input) -o $(output)
#
# เบเบธเบเบเบฒเบเบฎเบงเบเบฎเบงเบกเปเบเบเบชเบฐเบซเบผเบฑเบเบเบดเปเบชเบเบชเบณเบฅเบฑเบเปเบเบฅเป .c เบเบตเปเบกเบฒเบเบฒเบ
# เบเบฒเบเปเบเบฅเป .k:
#
$(foreach:%.k=%.o): $(foreach:%.k=%.c): foreach *.k
$(CC) $(SPECIAL_K_FLAGS) -c $(input) -o $(output)
เปเบเบดเปเบเปเบญเบเบฐเบชเบฒเบเบเปเบฝเบงเบเบฑเบ foreach clause เปเบเบเบปเบเบฅเบฐเบเบฝเบเบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบกเปเบฅเบฐเบเบปเบงเบขเปเบฒเบ.
$/ เบญเบฑเบเบเบตเปเปเบกเปเบเบเปเบฒเบเบปเบเบเบตเป, เบเปเปเบงเปเบฒเบเบฐเปเบเบฑเบ "/", เบซเบผเบทเบขเบนเปเปเบ Windows เปเบเบตเบก "\". เบเปเบฒเบเบเปเบญเบเบเบฒเบเบกเบฑเบ, เบเปเบฒ
เบเปเบฒเบโเบเปเบญเบโเบเบฒเบโเบเบตเปโเบเบฐโเปเบฅเบตเปเบกโเบเบปเปเบโเปเบเบโเบเบฒเบ portableโ, เปเบเบฑเปเบโ: เบซเบเบถเปเบโเบเบตเปโเบเปเบฒเบโเปเบเปโเบชเปเบฒเบโเบเบถเปเบโเปเบโเบฅเบฐโเบเบปเบโเบเบฐโเบเบธโเบเบฑเบโ:
เบเบปเบเบเบฐเบฅเบดเบเบเบญเบเบเปเบญเบ:
.$/myprog >$(เบเบปเบเบเบฐเบฅเบดเบ)
เบชเปเบฒโเบฅเบฑเบโเบเบทเปโเปเบเบฅโเปโเบเปเบฒเบโเปเบเบฑเบโเบเบฒเบโเปเบเปโเบเบฝเบโเบกเบฑเบโเบเปเปโเบเปเบฒโเปเบเบฑเบโเบเบฑเปเบโเบเบฑเปเบ Windows เบชเบฒโเบกเบฒเบโเบเบฑเบโเบเบฒเบ Unixโ
syntax เบขเบนเปเบเบตเปเบเบฑเปเบ.
เบเบฒเบเปเบฅเบทเบญเบ Variables
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบชเบดเปเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบเบเบธเบเบงเบดเบเบตเบเบฒเบเบเบตเปเบญเบฐเบเบดเบเบฒเบเบเปเบฒเบเปเบเบดเบ (เบเบปเบเปเบงเบฑเปเบเบเปเบฒเบฅเบฐเบเบธเปเบงเปเปเบเบฑเบเบขเปเบฒเบเบญเบทเปเบ) เปเบเบทเปเบญเบเบฑเบเปเบเบ
bahaviour เบเบญเบ makepp. เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเบงเบเบกเบฑเบเปเบกเปเบเบเปเปเปเบเปเบเปเบฒเบเบปเบเบเบฑเบเบซเบกเบปเบ.
MAKEPP_DEBUG
เบเปเบฒเบเปเบฒเบเบชเบปเปเบเบญเบญเบเบญเบฑเบเบเบตเปเบเปเบงเบเบกเบนเบเบเปเบฒเบเบตเปเปเบเปเบเบดเบเบเปเบญเบเบเบตเปเบเบฐเปเบเบซเบฒ makepp, เบเปเบฒเบเบเบฐเปเบเปเบฎเบฑเบเบเบฒเบเปเบเปเปเบเบซเบผเบฒเบเบเบถเปเบ
เบเปเปเบกเบนเบ. เบเบตเปเปเบกเปเบ "RULE_SOURCE" เบเบญเบเปเบเบฅเปเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบเบเบฐเบเบฐเบเบตเปเบญเบฑเบเบเบตเปเบกเบตเบเบปเบเบเบฐเบเบปเบเบเบฒเบเปเบเป
makeppinfo, mppi เปเบฅเบฐเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบงเปเบเปเบฅเบฐเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบเบฑเบเบเบนเปเบเบฒเบเปเบเป
makepplog, mppl. เบญเบฑเบเบเบตเปเบเบฑเบเบเบฐเบชเบฐเปเบเบเปเบซเปเบเปเบฒเบเปเบซเบฑเบเบเปเบฒ makepp เปเบปเบเบเบงเบฒเบกเบเบปเบเบเบณ เบซเบผเบท hangs,
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบเปเบกเปเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบงเปเบเบเบฝเบงเบเบฑเบเบเบตเปเบเปเปเบกเบตเบเบตเปเบชเบดเปเบเบชเบธเบ:
A = $A # เบเบฒเบเบเบฐเปเบกเบตเบเบเบปเบเบเบฒเบเปเบฅเบทเปเบญเบเปเบงเบฅเบฒ, เบเปเบญเบเบเบฒเบ :=
B = $C
C = $B
MAKEPP_LN_CP
เปเบเบดเปเบเบเบฑเบเบเบถเบเบเบฒเบเปเบเป &ln.
makepp_percent_subdir
เบเบฑเปเบเบเปเบฒเบเบตเปเปเบเบฑเบเบเปเบฒเบเบตเปเปเบเปเบเบดเบเบเบฒเบเบขเปเบฒเบ (เปเบเบฑเปเบ: 1) เปเบเบทเปเบญเปเบซเปเบกเบต "%" เปเบเปเบเบปเปเบฒเปเบฒเบ เบซเบผเบทเบเบฒเบเบเบถเปเบเบเบฑเบเบเบฒเบเบเบฑเบเบเบนเป
เปเบเบเบปเปเบงเบซเบผเบฒเบเบเบงเปเบฒเบซเบเบถเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบต.
makepp_require_phony
เบเบฑเปเบเบเปเบฒเบเบตเปเปเบเบฑเบเบเปเบฒเบเบตเปเปเบเปเบเบดเบเบเบฒเบเบขเปเบฒเบ (เปเบเบฑเปเบ: 1) เปเบเบทเปเบญเบเปเบญเบเบเบฑเบเบเบงเบฒเบกเบซเบผเบปเบเปเบซเบผเบเบตเปเบเปเปเบเบฑเบเปเบเบ (เปเบเบฑเปเบเบงเปเบฒเบเบปเบเบฅเบฐเบเบฝเบ
เบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบเปเบเบเบเปเปเบกเบตเบเบฒเบเบเบฐเบฅเบดเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบญเบเบกเบฑเบ). เบเบปเบงเปเบเบเบตเปเบเบงเบเบเบฐเปเบเบฑเบเบเบงเบฒเบกเบเบดเบเปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ, เปเบเบดเบ
เบเปเบญเบเบเบฑเบเบเปเบญเบเปเบชเปเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเบเบตเปเปเบเบเบซเบฑเบ, เปเบเปเบงเปเบฒเบเบฐเบเปเบฒเบฅเบฒเบเบเบงเบฒเบกเปเบเบปเปเบฒเบเบฑเบเปเบเปเบเบฑเบเบซเบผเบฑเบ
makefiles sloppy.
makepp_signature_C_flat
เบเบตเปโเปเบกเปเบโเบเบฒเบโเปเบฅเบทเบญเบโเบเบตเปโเบเบฐโเบฅเบฒเบโเปเบเบฑเบ C. เบเบฑเปเบโเบเปเบฒโเบเบตเปโเปเบเบฑเบโเบกเบนเบโเบเปเบฒโเบเบตเปโเปเบเปโเบเบดเบโเบเปเบฒโเบเบงเบโเบซเบเบถเปเบ (เปเบเบฑเปเบ 1โ) เปเบเบทเปเบญโเบเบดเปเบโเบเบปเบงโเบเบญเบโเบเปเบฒเบโ
เปเบซเบผเปเบเบเบตเปเปเบเบฑเบเปเบ, ie เปเบชเบฑเปเบเปเบซเบกเปเบเบฑเบเบซเบกเบปเบ (เบเบปเบเปเบงเบฑเปเบเบเบฐเบกเบฒเบ preprocessor เบเบฐเปเบซเบผเบเบเบฒเบ) เปเบกเปเบ
เบเบทเบเบเบฐเบเบดเบเบฑเบเบเบทเบเบฑเบเบเปเบญเบเบซเบงเปเบฒเบ เปเบฅเบฐเบเบณเบชเบฑเปเบ "#line" เปเบกเปเบเบเบทเบเบฅเบฐเปเบฅเบตเบ.
makepp_simple_concatenation
เบเบฑเปเบเบเปเบฒเบเบตเปเปเบเบฑเบเบเปเบฒเบเบตเปเปเบเปเบเบดเบเบเบฒเบเบขเปเบฒเบ (เปเบเบฑเปเบ: 1) เปเบเบทเปเบญเบเปเบญเบเบเบฑเบ "เบเบฒเบเบเบปเบเปเบเบเปเบเบ rc".
เปเบเปเบกเบธเบ
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเปเปเบเบฑเบ perl เบเบตเปเปเบเปเบเบญเบเบเบตเปเบเปเบฒเบเบเปเบฒเบฅเบฑเบเปเบเปเปเบเบทเปเบญเปเบฅเปเบเบชเบฐเบเบดเบเปเบ makepp
เบเบธเบ, เปเบฅเบฐเบชเบปเปเบเบญเบญเบเบกเบฑเบ. เบเบตเปเบชเบฒเบกเบฒเบเบเปเบงเบเปเบซเปเปเบฅเปเบเบชเบฐเบเบดเบเบเปเบญเบเบเปเบงเบ perl เบเบฝเบงเบเบฑเบ. เบเบตเปโเปเบกเปเบ
เบชเปเบงเบเปเบซเบเปเปเบกเปเบเปเบเบฑเบเบเบฐเปเบซเบเบเบชเปเบฒเบฅเบฑเบเบเบธเบเบเบฒเบเบเบปเบเบชเบญเบ, เบเบฒเบเบเบดเบเบเบฑเปเบเปเบฅเบฐเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเปเบชเปเบฒเบ recursive.
VPATH
เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบปเบงเปเบเบเบตเปเปเบเบฑเบเบเบฒเบเบเปเบฒเปเบเบ implicitly เปเบญเบตเปเบเบงเปเบฒ "vpath % value".
เบเบณ เบเบปเบเปเบงเปเบเปเบญเบ Variables
Makepp เบเบณเบเบปเบเบเบปเบงเปเบเบเบณเบเบงเบเปเบถเปเบเปเบงเปเบฅเปเบงเบเปเปเบฒ, เปเบเบดเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบปเบเบฅเปเบฒเบเปเบเป:
AR เบกเบฒเบเบเบฐเบเบฒเบ: "ar".
ARFLAGS
เบกเบฒเบเบเบฐเบเบฒเบ: "rv".
AS เบกเบฒเบเบเบฐเบเบฒเบ: "เปเบเบฑเบ".
CC เบกเบฒเบเบเบฐเบเบฒเบ: เบเบปเบเบเบฑเปเบเบเปเบฒเบญเบดเบเปเบเบเบฑเบเบเบฒ "gcc", "egcc", "pgcc", "c89" เบซเบผเบท "cc", เบซเบผเบทเปเบ Windows
เบเบญเบเบเบฒเบเบเบฑเปเบ, "cl" เบซเบผเบท "bcc32".
เบเปเบฒเบเบเบณเบเบฑเบ
เบกเบฒเบเบเบฐเบเบฒเบ: เบเปเบฒ "$(CC)" เปเบเบฑเบ GNU compiler "-g -Wall", เบเปเบฒเบกเบฑเบเปเบเบฑเบเบซเบเบถเปเบเปเบเบชเบญเบ Windows.
เบฅเบงเบเบฅเบงเบกเบเปเปเบกเบตเบซเบเบฑเบ, เบญเบทเปเบ "-g".
CurdIR
เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเป Makefile เบเบฐเบเบธเบเบฑเบเบขเบนเป.
CXX เบกเบฒเบเบเบฐเบเบฒเบ: เบเบปเบเบเบฑเปเบเบเปเบฒเบญเบดเบเปเบเบเบฑเบเบเบฒ "g++", "c++", "pg++", "cxx", "C" "C" เบซเบผเบท "aCC", เบซเบผเบทเบขเบนเปเปเบ
Windows เบเบญเบเบเบฒเบเบเบฑเปเบ "cl" เบซเบผเบท "bcc32".
CXXFLAGS
เบกเบฒเบเบเบฐเบเบฒเบ: เบเปเบฒ "$(CXX)" เปเบเบฑเบ GNU compiler "-g -Wall", เบเปเบฒเบกเบฑเบเปเบเบฑเบเบซเบเบถเปเบเปเบเบชเบญเบ Windows.
เบฅเบงเบเบฅเบงเบกเบเปเปเบกเบตเบซเบเบฑเบ, เบญเบทเปเบ "-g".
F77 เบกเบฒเบเบเบฐเบเบฒเบ: เบเบปเบเบเบฑเปเบเบเปเบฒเบญเบดเบเปเบเบเบฑเบเบเบฒ "f77", "g77" เบซเบผเบท "fort77".
FC เบกเบฒเบเบเบฐเบเบฒเบ: "$(F77)".
LD เบกเบฒเบเบเบฐเบเบฒเบ: "ld".
lex เบกเบฒเบเบเบฐเบเบฒเบ: เบเปเบฒเบญเบดเบเบเบตเปเบเบปเบเปเบซเบฑเบเปเบเบเบฑเบเบเบฒ "lex" เบซเบผเบท "flex".
LIBTOOL
เบกเบฒเบเบเบฐเบเบฒเบ: "libtool".
เปเบฎเบฑเบ
เบเบปเบงเปเบเบเบตเปเบกเบตเบชเบญเบเบเปเบฒเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เบเบถเปเบเบเบฑเบเบเบฒเบเบกเบตเบซเบผเบทเบเปเปเบเบญเบ
"--traditional-recursive-make". Makepp เบฎเบฑเบเบฎเบนเปเปเบงเบฅเบฒเบเบตเปเบเบปเบงเปเบเบเบตเปเบเบทเบเบเปเบฒเปเบเปเปเบฅเบฐ
เบเบดเบเบเบธเบเบชเบปเบกเบเบฑเบเบเบฒเบเบขเปเบฒเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเปเบญเบเบเบตเปเบเบฒเบเปเบญเบตเปเบเบเบทเบเปเบเบตเบเบเบถเปเบเบเบดเบ. เบเบตเปเบชเบฒเบกเบฒเบเปเบเบฑเบ
undesirable เปเบเบเบฐเบเบฐเบเบตเปเบเปเบฒเบเบเปเบฒเบฅเบฑเบเบเปเบญเบเปเบเปเบฒเบเบฑเบเบกเบฑเบ, เบชเบฐเบเบฑเปเบเบเปเบฒเบญเบดเบเบเปเบฝเบเบเบฒเบเปเบเปเบเบฑเบ a
makepp เบชเบฐเปเบเบฒเบฐ "$((MAKE))" เปเบเบดเปเบเบเบฐเบเปเปเบเบดเบเบเบธเบเบชเบปเบกเบเบฑเบ. เบเปเบฒเบเบเปเปเบเบงเบเบเบฑเปเบเบกเบฑเบ
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบเบเปเบฒเบฅเบฒเบ recursion smart เบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเบงเบฝเบเบเบฐเบกเบฒเบ.
MAKECMDGOALS
เบเบปเบงเปเบเบเบตเปเบเบทเบเบเบฑเปเบเปเบเปเบเปเปเปเบเปเปเบเปเปเบเบ makepp. เบเปเบฒเบเบชเบฒเบกเบฒเบเบชเบญเบเบเบฒเบกเบกเบฑเบเปเบเบทเปเบญเปเบฎเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบฝเบเปเบเปเบเปเบฒ
เปเบเบปเปเบฒเปเบฒเบเบเบตเปเปเบเปเบเบญเบเปเบเปเบเบทเบเบฎเปเบญเบเบเป.
เบกเบฒเบเบเบฐเบเบฒเบ: เบเปเปเบงเปเบฒเปเบเบปเปเบฒเปเบฒเบเบญเบฑเบเปเบเบเบตเปเบเบฑเบเปเบเบเบเบฑเบเบเบนเปเปเบเป (เบซเบผเบทเบเบฒเบเปเบญเบตเปเบเบเบทเบ) เบเบตเปเบชเบฐเปเบญเบเปเบซเป.
เบซเบงเปเบฒเบเปเบเบปเปเบฒเปเบกเบทเปเบญเบชเปเบฒเบเปเบเบปเปเบฒเปเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเปเบเบ implicitly.
ifneq $(เบเบฒเบเบเบฑเปเบเบเบญเบเบเบดเปเบชเบ-เปเบเบปเปเบฒเปเบฒเบ, $(MAKECMDGOALS))
# เปเบเบปเปเบฒเปเบฒเบเบเบดเปเบชเบเปเบกเปเบเปเบถเปเบเปเบเปเบเบปเปเบฒเปเบฒเบเบเบตเปเบเบฐเปเบเปเบเปเบเบเบฐเบเบธเบเบฑเบ
เบญเบทเปเบ ifeq $(MAKECMDGOALS)
# เบเปเปเบกเบตเปเบเบปเปเบฒเปเบฒเบเบเบตเปเบเบฑเบเปเบเบ
เบชเบดเปเบเบชเบธเบ
MAKEFLAGS (เบชเบปเปเบเบญเบญเบเปเบฅเปเบง)
เบเบฒเบเปเบฅเบทเบญเบเบกเบฒเบเบเบฐเบเบฒเบเบเบตเป makepp เบเบทเบเปเบญเบตเปเบเบงเปเบฒ. เบเบนเปเบเบตเปเบกเบตเบเบปเบเบซเบกเบฒเบเบชเบฐเบเบฑเบเบเบฝเบง
เปเบเบเบเบญเบกเปเบกเปเบเบฅเบงเบกเบเบฑเบเปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบเปเบเบเบเปเปเบกเบต "-" เบเบฑเปเบเบเปเบฒ (เบชเบฐเบซเบงเบฑเบเบฎเบนเปเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบ gmake เปเบฅเบทเบญเบ
เบเบดเปเบก "-").
เบชเปเบฒเบเบเปเปเบกเบนเบ
เบกเบฒเบเบเบฐเบเบฒเบ: "เบเปเปเบกเบนเบ".
MAKEPPFLAGS (เบชเบปเปเบเบญเบญเบเปเบฅเปเบง)
เบญเบฑเบเบเบตเปเบเบทเบเบเบฑเปเบเปเบเบฑเบเบเปเบฒเบเบฝเบงเบเบฑเบเบเบฑเบ MAKEFLAGS, เปเบเปเบงเปเบฒเบเบฝเบเปเบเปเบเปเบฒเบเบปเบงเปเบเบเบตเปเบขเบนเปเปเบ
เบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบญเบ makepp.
_MAKEPPFLAGS (เบชเบปเปเบเบญเบญเบเปเบฅเปเบง)
เบเบปเบงเปเบฅเบทเบญเบเบชเบฐเปเบเบฒเบฐเบเบญเบ makepp เบเบตเปเบเปเบญเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเปเบเบปเปเบฒเบเบฑเบเปเบเปเบเบญเบ POSIX/gmake, เปเบเบดเปเบ makepp
เบเบทเบเปเบญเบตเปเบ. เปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเบขเบนเปเปเบเบเบปเบงเปเบเปเบเบเบเปเบฒเบเบซเบฒเบเบเบฑเปเบเบเบฑเปเบ makefile เบกเปเบฅเบฐเบเบปเบเบเปเปเบชเบฒเบกเบฒเบเบเปเบฒเบฅเบฒเบเปเบเป
เบเบงเบฒเบกเปเบเบปเปเบฒเบเบฑเบเปเบเปเปเบเบเบเบฒเบเบเบปเบเปเบฅเบตเบเบเบฒเบเบเบฑเปเบเบเปเบฒ MAKEFLAGS. เบเบตเปโเปเบกเปเบโเบเปเบฒโเบเบปเบโเบเบฝเบโเปเบเปโเบกเบตโ
"--traditional-recursive-make".
MAKEPP_VERSION
เบชเบฐเบเบฑเบเบเบญเบ makepp เบเบตเปเบเปเบฒเบเบเปเบฒเบฅเบฑเบเปเบฅเปเบเบเบฑเบ. เบเปเบฒเบกเบฑเบเปเบเบฑเบเปเบงเบตเบเบฑเบเปเบเบเปเบฒ, เบกเบฑเบเบเบฐเบกเบต a
hyphen เบเบดเบเบเบฒเบกเบเปเบงเบ YYMMDD เบเบงเบเบเบฑเบเบเปเปเบกเบนเบเบเบฒเบเปเบเปเบเบตเปเบกเปเบเบตเบก. เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเปเบเบตเปเบชเปเบฒเบฅเบฑเบ "ifdef"
เปเบเบทเปเบญเปเบเบทเปเบญเบเบชเบดเปเบเบเปเปเบชเปเบฒเบเบชเบฐเปเบเบฒเบฐเบเบญเบ makepp เบเบฒเบเบเบนเปเบเบฐเบฅเบดเบเบญเบทเปเบเป.
เบกเบฒเบเบเบฐเบเบฒเบ: เบเปเบฒเบเบฝเบงเบเบฑเบเบชเบฐเปเบเบเปเบเบ "makepp --version"
PWD เบเบฒเบกเปเบเบเบชเปเบฒเบฅเบฑเบ "CURDIR".
RM เบกเบฒเบเบเบฐเบเบฒเบ: "rm -f". เบเบตเปเปเบกเปเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบชเปเบฒเบฅเบฑเบ Makefiles เบกเปเบฅเบฐเบเบปเบ. เบชเปเบฒเบฅเบฑเบเบเบปเบเปเบซเบกเปเบกเบฑเบเปเบเป
เบเปเบฒเบชเบฑเปเบ builtin &rm เปเบเบเบเบปเบ. เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบฝเบเบเบปเบเบฅเบฐเบเบฝเบเบชเบฐเบญเบฒเบ phony, เปเบเบดเปเบ
เบเปเบฒเบชเบฑเปเบ "makeppclean -r" เปเบเบ.
เบฎเบฒเบ
เปเบชเบฑเปเบเบเบฒเบเบเบตเปเบเปเบญเบเบเบฑเบเบฎเบฒเบเบเบญเบเบฅเบฐเบเบปเบเบเบฒเบเบเปเปเบชเปเบฒเบเบเบญเบเบเปเบฒเบ, ie เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบทเปเบกเบญเบตเบเปเบ
เปเบเบดเปเบเบเปเบฒเบเบกเบต "RootMakeppfile.mk)". เบเปเบฒเบเปเบฒเบเบเปเปเบกเบต, เบเบปเบงเปเบเบเบตเปเปเบกเปเบ
เบซเบงเปเบฒเบเปเบเบปเปเบฒ
SHELL
เบเบปเบงเปเบเบเบตเปเบเบทเบเปเบเบปเบฒเบฅเบปเบเบเบฝเบเปเบเปเบเปเบฒเบเปเบฒเบ "เบชเบปเปเบเบญเบญเบ" เบกเบฑเบ. เปเบเบเปเบฅเบฐเบเบตเบเบฑเปเบเบเปเบฒเบงเบกเบฑเบเปเบกเปเบ Shell
เปเบเบดเปเบเบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฐเบเปเบฒเบเบตเปเบเปเปเปเบเปเบชเปเบฒเบเปเบเบเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเบดเปเบชเบเบเบฒเบเบขเปเบฒเบเปเบเบกเบฑเบ (เบเปเบฒเบกเบฐเบเบฒ
เบเบตเปเบเบทเบเบเบฐเบเบดเบเบฑเบเปเบเบเบเบปเบ). เปเบ Windows Strawberry เบซเบผเบท ActiveState Perl, เบเปเบฒเบเปเบฒเบเบกเบต
Shell เบเปเบฒเบเบเบท Unix, เบเปเบฒเบเบเปเบญเบเบเบฑเปเบเบเบปเบงเปเบ SHELL เบเบญเบเบเปเบฒเบเปเบเบฑเบเบเปเบฒเบเบตเปเบฅเบปเบเบเปเบฒเบเบเปเบงเบ "sh" เปเบเบ.
เบซเบผเบท "sh.exe" เบเปเบญเบเบเบตเปเบเบฐ เปเบเบซเบฒ makepp.
เบกเบฒเบเบเบฐเบเบฒเบ: เบเบปเบเบเบฑเปเบเบเปเบฒเบญเบดเบเปเบเบเบฑเบเบเบฒ "/usr/xpg4/bin/sh" (เปเบเบฑเปเบ: Solaris) เบซเบผเบท "/sbin/xpg4/sh"
(เปเบเบฑเปเบ: Reliant Unix) เบซเบผเบท "/ เบเบฑเบ / sh".
YACC
เบกเบฒเบเบเบฐเบเบฒเบ: เบเปเบฒเบญเบดเบเบเบตเปเบเบปเบเปเบซเบฑเบเปเบเบเบฑเบเบเบฒ "bison -y" เบซเบผเบท "yacc".
Variables เปเบฅเบฐ Perl
เบเปเบฒเบเบปเบงเปเบเบเบทเบเปเบเบฑเบเปเบงเปเปเบเบฑเบ Perl เบเบปเบเบเบฐเบเบด, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเปเปเบเบเบเบปเบเบเบฒเบ
เบฅเบฐเบซเบฑเบ Perl เบเปเบฒเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบฎเบฑเบเบเบฒเบเบซเบกเบนเบเปเบเปเบเบตเปเบชเบฑเบเบชเบปเบเบเบฑเบเบเบงเบเปเบเบปเบฒ; เปเบเบดเปเบ makepp_extending
เบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบ.
เบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบปเบงเปเบเบเบปเปเบงเปเบฅเบเบเบฒเบ Perl เปเบกเปเบเบเบฑเบเบฅเบธเปเบเปเปเบเบเบเบฒเบเบเบณเปเปเบฒเบเบงเบเบกเบฑเบเบเปเบงเบ "Mpp::global"
เบเบธเบ. เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบเบเบปเบงเปเบเปเบเป, เบเบฑเบเบเปเปเบเบฑเบเบกเบตเบขเบนเปเปเบ makefile เปเบเบเบฑเบเบเบธเบเบฑเบ, เปเบฅเบฐเบเบตเปเบเปเบฒเบ
เบกเบญเบเบซเบกเบฒเบเปเบซเปเบขเบนเปเปเบเบเบธเบเบเบตเปเบเบฒเบเบเบฑเปเบเบเบฐเปเบเบฑเบเบเบปเปเบงเปเบฅเบ, เบเบทเบเบฑเบเบงเปเบฒเปเบเบปเปเบฒเบซเบฒเบเปเปเบญเบญเบ
เบเบฐเปเบซเบผเบเบเบฒเบ "เบเบปเปเบงเปเบฅเบ" เบชเปเบฒเบฅเบฑเบเบกเบฑเบ.
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเบเบเบปเบเบเบตเปเปเบกเปเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ! เบเบนเปเปเบเปเบญเบฒเบเบเบฐ overridden เบเบปเบงเปเบเปเบซเบผเบปเปเบฒเบเบตเป
เปเบเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบเบซเบผเบทเบเปเบฒเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก. เบเบฒเบ makefile เบญเบทเปเบเป loaded เบเปเบญเบเบเบตเป
เบซเบเบถเปเบเบญเบฒเบเบเบฐเปเบฎเบฑเบเปเบซเปเบเบปเบงเปเบเบเบปเปเบงเปเบฅเบเบซเบผเบทเปเบเบปเปเบฒเบซเบกเบฒเบเบชเบฐเปเบเบฒเบฐ. เปเบเบเปเบฅเบฐเบเบตเบเบฑเปเบเบเปเบฒเบงเบเบตเป, เบเปเบฒเบเบเบฐเบเปเป
เบเบญเบเบซเบฒเบเปเบฒเบเบญเบเบเบปเบงเปเบ, เบซเบผเบทเปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบปเบเบกเบฑเบ, เบญเบฒเบเบเบฐเปเบญเบปเบฒเบเบฑเบเบชเบดเบเบเบญเบเบกเบฑเบเปเบ
(เบเบฝเบโเปเบเบปเปเบฒโเบเบฑเบโเบเบปเบงโเบเบฑเบโเบเบธเบ "overrideโ"โ, เบเบปเบโเปเบงเบฑเปเบโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบชเบฐโเปเบเบฒเบฐโเปเบเบปเปเบฒโเบซเบกเบฒเบโ.)
เบเปเบงเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเบเบเบปเบเบเปเบฒเบเบเบฑเบเบเปเบฒเบกเบเบฒเบเบเบฐเบซเบเบฒเบเบเบปเบงเปเบเปเบซเบผเบปเปเบฒเบเบตเป, เบเปเบฒเบเบงเบเปเบเบปเบฒเปเบเบฑเบเบเบฐเปเบเบ
"=" เบซเบผเบท ";=". เบเบปเบงเปเบเบเบดเปเบชเบเปเบเบฑเปเบ "$(CC)" เปเบฅเบตเปเบกเบเบปเปเบเปเบเบฑเบเบซเบเปเบฒเบเบตเป, เบเบปเบเบเปเบงเบฒเบเบงเบเบกเบฑเบเปเบเบฑเบ
เบเบฒเบโเบกเบญเบโเบซเบกเบฒเบโเปเบซเป. เบเบฑเปเบเบเบฑเปเบ, เปเบเบซเบผเบฒเบเปเบเปเบฅเบฐเบเบต, เบเปเบฒเบเบเบฐเบเปเปเปเบซเบฑเบเบเบธเบเบเปเบฒเบเบญเบเบกเบฑเบ.
เบชเปเบฒเบฅเบฑเบเปเบซเบเบเบปเบเปเบซเบผเบปเปเบฒเบเบตเปเบกเบฑเบเบเบตเบเบงเปเบฒเบเบตเปเบเบฐเปเบซเป makepp เบเปเบฒเบเบปเบเบเปเบฒเบเบตเปเบเบทเบเบเปเบญเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเปเบเป
เบเบปเบงเปเบ "makeperl", เปเบเบดเปเบเบเบปเบงเปเบเปเบเปเบเบทเบเบเบฐเปเบกเบตเบเบเปเบญเบเบเบตเปเบฅเบฐเบซเบฑเบ Perl เบเบฐเปเบเปเบฎเบฑเบ.
เปเบเบงเปเบฒ:
makeperl { $$current_value = '$(MAKEFILE_VAR)' }
เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบปเบงเปเบเปเบ makefile perl blocks เบเบตเปเปเบกเปเบเบเบฑเบเบฅเบธเปเบเปเปเบเบเบเปเบฒเบเบเบปเบงเปเบ Perl
$makefile เบเบฑเปเบเบเปเปเปเบเบเบตเป:
perl { $current_value = $makefile->expand_variable( 'MAKE_VAR' ) }
เบเบฑเบเบเบฑเบเบชเบฐเปเบซเบกเบตเปเบเปเบฎเบฑเบเบงเบฑเบเบเบธ makefile เบเปเบฒเบเปเบเบฑเบ argument เบเบตเบชเบญเบ $_[1]:
เบเปเบญเบ f_f { $current_value = $_[1]->expand_variable( 'MAKE_VAR' ) }
เบเปเบฒเบชเบฑเปเบเปเบกเปเบเบเบงเบเบเบฐเบเบทเบเปเบญเบตเปเบเบเบฒเบเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบ, เบเปเบญเบเบเบตเปเบงเบฑเบเบเบธ makefile เปเบกเปเบ
เปเบเบปเปเบฒเปเบเบดเบเปเบเปเบเปเบฒเบ "$Mpp::Subs::rule->{MAKEFILE}":
sub c_cmd { $current_value = $Mpp::Subs::rule->{MAKEFILE}->expand_variable( 'MAKE_VAR' ) }
เปเบเป makepp_variables เบญเบญเบเบฅเบฒเบเปเบเบเปเบเปเบเปเบฅเบดเบเบฒเบ onworks.net