рд░рд┐рдЪрд░реНрдб рдбрдмреНрд▓реВрдПрдо рдЬреЛрдиреНрд╕, рд▓реЗрдЦрдХ
рд▓рдХреНрд╖реНрдп рд╕реНрд░реЛрдд рдХреЛрдб
- рдХреЗрд╡рд▓ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдорд╛рдзрд╛рди рд░рдгрдиреАрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди - "рдпрджрд┐ рд▓рдХреНрд╖реНрдп рдлрд╝рд╛рдЗрд▓ рдЧреБрдо рд╣реИ рдпрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рд╕реЗ рдкреБрд░рд╛рдиреА рд╣реИ рддреЛ рдЕрд╕реЗрдВрдмрд▓реА рдирд┐рд░реНрджреЗрд╢ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред" рд▓рдХреНрд╖реНрдп рдЕрдиреНрдп рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдпреВрдЖрд░рдПрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛, рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрд╢реЛрдзрди рд╕рдордп рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛, рдкреИрдХреЗрдЬ рдмрд┐рд▓реНрдб рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛
рдХреЛрдЬреА , рдЪреЗрдХрд╕рдореЛрдВ рдХреА рддреБрд▓рдирд╛, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЪрдпрдирд╛рддреНрдордХ рд▓рдВрдШрди рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдЪрд▓рд╛рдирд╛ред - рдмрд┐рд▓реНрдб рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдореЗрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдирд┐рдпрдо рдирд╛рдореЛрдВ рдХреЛ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреЛрдИ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдХрд┐ рдирд┐рдпрдо рдЪрд▓рд╛рддреЗ рд╕рдордп, рдЬрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ "рдкрд░реАрдХреНрд╖рдг" рдирд╛рдордХ рдПрдХ рдирд┐рдпрдо рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИ, "рдкрд░реАрдХреНрд╖рдг" рдирд╛рдордХ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЧрд▓рддреА рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рддреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЕрдм рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрдХ рдпрд╣ рдорд╛рдиреЗрдЧрд╛ рдХрд┐ рд▓рдХреНрд╖реНрдп рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреЛрдИ рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ (рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк ".PHONY: рдкрд░реАрдХреНрд╖рдг" рдирд┐рд░реНрджреЗрд╢ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рд▓рдХреНрд╖реНрдп рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдирд┐рдпрдо рдирд╛рдореЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рддреЗ рд╣реИрдВред
- рдЕрд╕реЗрдВрдмрд▓реА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ред
рд▓рдХреНрд╖реНрдп рдЖрдкрдХреЛ рдирд╛рдорд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдПрдХ рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд╛рдо рд╕реЗ рдбрд┐рдмрдЧ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЪрд┐рд╣реНрди рдЕрд▓рдЧ рд╕реЗ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ:
- рд╢реЗрд▓ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдБред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╛рдореЛрдВ рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рднрд╛рдЧрдиреЗ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛, рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЕрд▓рдЧ рд╢реЗрд▓ рджреБрднрд╛рд╖рд┐рдпрд╛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдкрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдмрд░реНрдмрд╛рджреА, "$" рд╡рд░реНрдг рдХреА рджреЛрд╣рд░реА рд╡реНрдпрд╛рдЦреНрдпрд╛ (рд╢реЗрд▓ рдФрд░ рдореЗрдХ рджреЛрдиреЛрдВ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд), рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдПред
рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЕрд╕реЗрдВрдмрд▓реА рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд▓рд┐рдП "$" рдХреЗ рдмрдЬрд╛рдп "%" рдкреНрд░рддреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ("$" рдХреЗрд╡рд▓ рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ), рдПрдХ рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рдПрд▓рдПрдПрд▓рдЖрд░(1) , рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкрдереЛрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЛ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рд╕реЗ рдШреЗрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЗ рд╕рд╛рде рдХреЛрдб рдмреНрд▓реЙрдХ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕рдВрдкреВрд░реНрдг рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ рдХреЛ рдХрдорд╛рдВрдб рд╢реЗрд▓ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдмреНрд▓реЙрдХ рдХреЗ рднреАрддрд░, рд╡рд┐рд╢реЗрд╖ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд┐рдирд╛, рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдХреЛрдб рд╕реНрд╡рд░реВрдкрдг рдХреА рдЕрдиреБрдорддрд┐ рд╣реИредрдпрд╣ рдерд╛:
рд▓рдХреНрд╖реНрдп: foo.o bar.o
${CC} ${CFLAGS} $< -o $@рдпрд╣ рдмрди рдЧрдпрд╛:
"рд▓рдХреНрд╖реНрдп": "foo.o", "bar.o" {
%CC %CFLAGS %< -o %@
}
рд▓рдХреНрд╖реНрдп рдХреА рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
- рдордирдорд╛рдиреЗ рдирд╛рдо рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд░реНрдерди:
рд▓рдХреНрд╖реНрдп рд╕рднреА = : "рд▓рдХреНрд╖реНрдп"
рд▓рдХреНрд╖реНрдп рд▓рд┐рдВрдХ =
"рд▓рдХреНрд╖реНрдп": "foo.o", "bar.o" {... }рд▓рдХреНрд╖реНрдп рд╕рдВрдХрд▓рди (рдирд╛рдо) =
"%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ } - рджреЛ рд▓реЙрдиреНрдЪ рдореЛрдб: рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдб рд▓рдХреНрд╖реНрдпреЛрдВ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдХ рдореЛрдб (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ "foo.o" рд▓рдХреНрд╖реНрдп "%name.o" рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ), рдФрд░ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдВрдХрд▓рди рдореЛрдб:
рд▓рдХреНрд╖реНрдп рд╕рднреА = : рд▓рд┐рдВрдХ
рд▓рдХреНрд╖реНрдп рд▓рд┐рдВрдХ =
"рд▓рдХреНрд╖реНрдп" : "foo.o", рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ ("рдмрд╛рд░") { ... }рд▓рдХреНрд╖реНрдп рд╕рдВрдХрд▓рди (рдирд╛рдо) =
"%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ } - рдЕрд╕реЗрдВрдмрд▓реА рд░рдгрдиреАрддрд┐ рд╡рд┐рд╢реЗрд╖ рдирд┐рдпрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╕реЗрдВрдмрд▓реА рд▓рдХреНрд╖реНрдп рдХреЛ рдлрд┐рд░ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд▓рд┐рдВрдХ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЪрд┐рд╣реНрди (рдирд┐рдпрдо рдирд╛рдо рдХреЗ рд▓рд┐рдП "рд▓рдХреНрд╖реНрдп" рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП *рдлрд╝рд╛рдЗрд▓ ("рд▓рдХреНрд╖реНрдп")) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
"рд▓рдХреНрд╖реНрдп": "foo.o", "bar.o" {... }
*рдлрд╝рд╛рдЗрд▓("рд▓рдХреНрд╖реНрдп") : *рдлрд╝рд╛рдЗрд▓("foo.o"), *рдлрд╝рд╛рдЗрд▓("bar.o") { ... }
- рдбреЗрд╡рд▓рдкрд░ рдЕрд╕реЗрдВрдмрд▓реА рд░рдгрдиреАрддрд┐ рдХреА рдордирдорд╛рдиреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред "*рдлрд╝рд╛рдЗрд▓" рдзреНрд╡рдЬ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (@{...} рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рджрдорди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ "рдирд┐рдХрд╛рд╕ 99" рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ):
рдпреБрдХреНрддрд┐ *рдлрд╝рд╛рдЗрд▓ (рдлрд╝рд╛рдЗрд▓ рдирд╛рдо) = @{
рдкрд░реАрдХреНрд╖рдг -f %рдлрд╝рд╛рдЗрд▓рдирд╛рдо || рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ 99
% рдореЗрдВ рдПрдл рдХреЗ рд▓рд┐рдПрд╕реНрд░реЛрдд: opennet.ru