рдЕрдВрдЧреНрд░реЗрдЬрд╝реАрдлреНрд░реЗрдВрдЪрд╕реНрдкреЗрдирд┐рд╢

Ad


рдСрдирд╡рд░реНрдХреНрд╕ рдлрд╝реЗрд╡рд┐рдХреЙрди

makepp_cookbook - рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдСрдирд▓рд╛рдЗрди

рдЙрдмрдВрдЯреВ рдСрдирд▓рд╛рдЗрди, рдлреЗрдбреЛрд░рд╛ рдСрдирд▓рд╛рдЗрди, рд╡рд┐рдВрдбреЛрдЬ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдпрд╛ рдореИрдХ рдУрдПрд╕ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдСрдирд╡рд░реНрдХреНрд╕ рдлреНрд░реА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ makepp_cookbook рдЪрд▓рд╛рдПрдВ

рдпрд╣ рдХрдорд╛рдВрдб рдореЗрдХрдк_рдХреБрдХрдмреБрдХ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдорд╛рд░реЗ рдХрдИ рдореБрдлреНрдд рдСрдирд▓рд╛рдЗрди рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдЬреИрд╕реЗ рдХрд┐ рдЙрдмрдВрдЯреВ рдСрдирд▓рд╛рдЗрди, рдлреЗрдбреЛрд░рд╛ рдСрдирд▓рд╛рдЗрди, рд╡рд┐рдВрдбреЛрдЬ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдпрд╛ рдореИрдХ рдУрдПрд╕ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдирд╡рд░реНрдХреНрд╕ рдлреНрд░реА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХрд╛рд░реНрдпрдХреНрд░рдо:

рдирд╛рдо


рдореЗрдХрдк_рдХреБрдХрдмреБрдХ - рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛

рд╡рд░реНрдгрди


рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рднреА рдореЗрдХ рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рдореИрдиреБрдЕрд▓ рдирд╣реАрдВ рдкрдврд╝рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрд┐рд╕реА рдХреА рд░реБрдЪрд┐ рдирд╣реАрдВ рд╣реИ--рд╣рдо рдХреЗрд╡рд▓ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд░рд╕реЛрдИ рдХреА рдХрд┐рддрд╛рдм рдХреЛ рдЗрд╕ рдЙрдореНрдореАрдж рдореЗрдВ рдПрдХ рд╕рд╛рде рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ рдЙрдирдХреА рдЬрд╝рд░реВрд░рдд рдХреА рдЪреАрдЬрд╝реЗрдВ рдорд┐рд▓ рд╕рдХреЗрдВрдЧреА
рдореИрдиреБрдЕрд▓ рдХреЛ рдкрдврд╝реЗ рдмрд┐рдирд╛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рд╢реАрдШреНрд░рддрд╛ рд╕реЗред рдпрд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЯрд╛рдЗрдк рдХрд░рдирд╛ рд╣реИ
рдкреНрд░рд╢реНрди, рдЬрдмрдХрд┐ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдирд┐рд░реНрджреЗрд╢ рдФрд░ рдмрд╛рдзрд╛рдПрдБ рдЗрд╕рдореЗрдВ рдорд┐рд▓реЗрдВрдЧреА
рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиред

рдЗрдорд╛рд░рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ
Do рдЗрд╕рд▓рд┐рдП рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ a рдкреБрд╕реНрддрдХрд╛рд▓рдп?

рдореИрдВрдиреЗ рдХрдИ рдмрдбрд╝реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреЗрдЦреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
рдЬреЛ рдЕрдкрдиреА рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдпрддрдГ, рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЙрд╕рдХреА рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ,
рдФрд░ рдлрд┐рд░ рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рддрд╛ рд╣реИред

рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп
рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рддреЛ рдпреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИрдВ
рдХрд╛рд░реНрдпрдХреНрд░рдо, рдХреНрдпреЛрдВрдХрд┐ рддрдм рдЖрдкрдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рд╕рднреА рдХрдорд┐рдпрд╛рдБ рдорд┐рд▓реЗрдВрдЧреА рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ
рдлрд╛рдпрджреЗ. рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ:

1. рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдмрд░реВрдЯреАрдиреНрд╕ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рд╣реЛрддрд╛ рд╣реИ
рдкреНрд░реЛрдЧреНрд░рд╛рдо, рдФрд░ рдХреЛрдИ рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 100% рд╕рдмрд░реВрдЯреАрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
рднрд┐рдиреНрди рдЙрдкрд╕рдореБрдЪреНрдЪрдп. рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдВрднрд╡рддрдГ рд╕реНрдереИрддрд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдП) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ
.a рдлрд╝рд╛рдЗрд▓, рдпрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдлрд╝рд╛рдЗрд▓)ред

2. рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реЛ рдЬрд┐рд╕реЗ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЖрдк
рдЗрд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдПрдХ рдЕрд▓рдЧ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рди рд╣реЛ
рдкреБрд╕реНрддрдХрд╛рд▓рдпред рдЧрддрд┐рд╢реАрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд╛рди рдХреЛ рдмрдЪрд╛ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдХрднреА-рдХрднреА рдмрдврд╝рд╛ рд╕рдХрддреА рд╣реИрдВ
рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рджрд░реНрд╢рди рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рддрд┐ рд▓реЛрдб рдХреА рдЧрдИ рд╣реИ
рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

3. рдЬрдм рдЖрдкрдХрд╛ рд▓рд┐рдВрдХ рд╕рдордп рдЕрддреНрдпрдзрд┐рдХ рд▓рдВрдмрд╛ рд╣реЛ, рддреЛ рдмрдбрд╝реЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдВрдХ рдХреЛ рдХрд╛рдлреА рддреЗрдЬрд╝ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрдереИрддрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдореБрдЦреНрдп рдиреБрдХрд╕рд╛рди рд╣реИ: рдХреБрдЫ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд▓рд┐рдирдХреНрд╕) рдкрд░, рдСрд░реНрдбрд░
рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рд╡рд╣ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд▓рд┐рдВрдХрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ
рдЗрд╕рдХреА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреНрд░рдо рдореЗрдВред рдпрд╣ рд╡рд╣ рд╕рдм рдХреБрдЫ рд▓реЗ рд▓реЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдЙрд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рдкреНрд░рддреНрдпреЗрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдлрд┐рд░ рдЕрдЧрд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдУрд░ рдмрдврд╝рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЕрдиреБрд╡рд░реНрддреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА a рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ
рдкреНрд░рддреАрдХ рдЬрд┐рд╕реЗ рдЕрднреА рддрдХ рдкрд┐рдЫрд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓рд┐рдВрдХрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рдФрд░ рдкрд┐рдЫрд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЬрд╛рдирддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рд▓рд┐рдВрдХрд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХрдИ рдмрд╛рд░ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред (рдореИрдВрдиреЗ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛
рдЬрд╣рд╛рдБ рд╣рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рддреАрди рдмрд╛рд░ рджреЛрд╣рд░рд╛рдиреА рдкрдбрд╝реАред рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд╣реА рдмрдирд╛ рд╣реИ
рдореИрдВ рдиреАрдЪреЗ рд╕реБрдЭрд╛рдП рдЧрдП рд╡реИрдХрд▓реНрдкрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг, рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддрд╛ рд╣реВрдВред)

рдЧрддрд┐рд╢реАрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдиреБрдХрд╕рд╛рди рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдпрджрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдореЗрдВ рдзреАрдореА рдЧрддрд┐ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐
рдЗрд╕реЗ рдвреВрдВрдврдирд╛ рдФрд░ рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рджреВрд╕рд░рд╛, рд╕рд╛рд░реА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд╕рдХрддреА рд╣реИ
рд╕рд╣реА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп; рдЖрдк рдХреЗрд╡рд▓ рдирд┐рд╖реНрдкрд╛рджрдирдпреЛрдЧреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ,
рдЖрдкрдХреЛ рдпрд╣ рднреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдЗрд╕рдХреА рд╕рднреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБред рддреАрд╕рд░рд╛, рдХреБрдЫ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░, рдпрд╣
рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреЗ рдЕрдВрджрд░ рдХреЛрдб рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдбреАрдмрдЧрд░реНрд╕ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ
рд╡реЛ рдЕрдЪреНрдЫрд╛ред

рдпрджрд┐ рдЖрдкрдХрд╛ рдореЙрдбреНрдпреВрд▓ рдХрднреА рднреА рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ
рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп: рдЖрдкрдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рднреА рдиреБрдХрд╕рд╛рди рдорд┐рд▓рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВред
рдореЗрд░реА рдкрд╕рдВрдж рдХреА рддрдХрдиреАрдХ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЖрдк рд▓рд┐рдирдХреНрд╕ рдкрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

my_module.o : $(filter_out my_module.o, $(рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб *.o))
рдПрд▓рдбреА -рдЖрд░ -рдУ $(рдЖрдЙрдЯрдкреБрдЯ) $(рдЗрдирдкреБрдЯ)

рдпрд╣ рдЬреЛ рдХрд░реЗрдЧрд╛ рд╡рд╣ рджреВрд╕рд░рд╛ рдмрдирд╛рдирд╛ рд╣реИ .o рдлрд╝рд╛рдЗрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ my_module.o, рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ
рдХреЗ рд╕рднреА .o рдЗрд╕ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВред рд▓рд┐рдВрдХрд░ рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдЧрд╛
рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕рдВрджрд░реНрдн рджреЗрдВ, рдФрд░ рд╢реЗрд╖ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ
рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХрд╛ рдЕрдЧрд▓рд╛ рдЪрд░рдг. рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░, рдЬрдм рдЖрдк рдЕрдВрддрддрдГ рдЕрдкрдирд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рддреЗ рд╣реИрдВ,
рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп libmy_module.a or libmy_module.so, рдЖрдк рдмрд╕ рдЗрд╕рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХ рдХрд░реЗрдВрдЧреЗ
my_module.o. рдЬрдм рдЖрдк рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВ .o рдлрд╝рд╛рдЗрд▓реЗрдВ, рдЖрдкрдХреЛ рдСрд░реНрдбрд░-рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ
рд▓рд┐рдВрдХрд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрдиред

рджреЗ рдореЗрдХрдкреНрдк рдЖрдВрдХрдбрд╝рд╛ рдЖрдЙрдЯ рдХреМрди рдХреМрди рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЙрдбреНрдпреВрд▓ рд░рд╣реЗ рдЬрд░реВрд░рдд

рднрд▓реЗ рд╣реА рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдЪреНрдЪреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реЛ, рдЬрд╣рд╛рдВ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
(рд╣рд░ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрдЬрд╛рдп), рдореЗрдХрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВ рд╣реА рдмрд┐рд▓реНрдб рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред рдЗрд╕рд╕реЗ рд╕рдВрдХрд▓рди рдХреЛ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЗрд╕рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ
рдЙрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдЬрд┐рдирдХреА рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЖрдк рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдкрдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЙрд╕ рдкрд░рд┐рдкрд╛рдЯреА рдХрд╛ рдХрдбрд╝рд╛рдИ рд╕реЗ рдкрд╛рд▓рди рдХрд░рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдХрдХреНрд╖рд╛рдПрдВ рдШреЛрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ
рдПрдХ рдкрдВрдХреНрддрд┐ xyz.h рд╕рдВрдХрд▓рд┐рдд рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ xyz.o (рдЕрд░реНрдерд╛рдд, рдЖрдк
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рди рдХрд░реЗрдВ xyz1.o рдФрд░ xyz2.o), рддреЛ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
"$(infer_objects)" рдлрд╝рдВрдХреНрд╢рди рдореЗрдХрдк рдХреЛ рдХреЗрд╡рд▓ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ
рдкреБрд╕реНрддрдХрд╛рд▓рдпред рдпрд╣ рджрд░реНрдЬрдиреЛрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореВрд▓ рд░реВрдк рд╕реЗ, "$(infer_objects)" рдХреА рд╕реВрдЪреА рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ .h рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬреЛ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рджрд┐рдЦрддреА рд╣реИрдВ
рд╕рдВрдЧрдд рдХреЗ рд▓рд┐рдП .o рдлрд╝рд╛рдЗрд▓реЗрдВ. рдпрджрд┐ рдЖрдк рддреЗрдЬреА рд╕реЗ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ
рд╕рд╛рде рдореЗрдВ, рдпрд╣ рд╕рдВрдХрд▓рди рд╕рдордп рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдХрднреА рднреА рдореЙрдбреНрдпреВрд▓ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд╣рдордд рдирд╣реАрдВ рдЙрдард╛рддреЗ
рд╡рд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬрд┐рд╕рдХрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ.

рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реВрдВ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдореЗрд░рд╛_рдкреНрд░реЛрдЧреНрд░рд╛рдо: $(infer_objects *.o, $(LIB1)/*.o $(LIB2)/*.o)
$(CXX) $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ) $(SYSTEM_LIBRARIES)

"$(infer_objects )" рдлрд╝рдВрдХреНрд╢рди рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рддрд░реНрдХ рджреЗрддрд╛ рд╣реИ (рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж)ред
рдЗрд╕ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░), рдФрд░ рдЗрд╕рдХреЗ рджреВрд╕рд░реЗ рддрд░реНрдХ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рднреА рджреЗрдЦрддрд╛ рд╣реИ
рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬрд┐рдирдХрд╛ рдирд╛рдо рдХрд┐рд╕реА рдХреЗ рдирд╛рдо рдХреЗ рд╕рдорд╛рди рд╣реИ .h рдХрд┐рд╕реА рднреА рдлрд╝рд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЙрд╕рдХреЗ рдкрд╣рд▓реЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдлрд╝рд╛рдЗрд▓реЗрдВ
рддрд░реНрдХред рдпрджрд┐ рдРрд╕реА рдХреЛрдИ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкрд╛рдИ рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рдЗрдиреНрд╣реЗрдВ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрдорд╛рд░рдд a рд╕реНрдерд┐рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп

рдпрджрд┐ рдЖрдк рдЖрд╢реНрд╡рд╕реНрдд рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд▓рд┐рдВрдХрд┐рдВрдЧ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ рдпрд╛
рдпрд╣ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдк рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рддрд░реАрдХреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ
рдЬрд╣рд╛рдВ рд╕рднреА рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ:

LIBRARY_FILES = abcde

libmin.a: $(LIBRARY_FILES).o
рдФрд░ рдЖрд░рдПрдо-рдПрдл $ (рдЖрдЙрдЯрдкреБрдЯ)
$(AR) рдХрд░реЛрдбрд╝ $(рдЖрдЙрдЯрдкреБрдЯ) $(рдЗрдирдкреБрдЯ)
ranlib $(рдЖрдЙрдЯрдкреБрдЯ) # рдЖрдкрдХреЗ рдУрдПрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

&rm рдореЗрдХрдк рдХрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд "рдЖрд░рдПрдо" рдХрдорд╛рдВрдб рд╣реИред рдпрджрд┐ рдЖрдк рдореЗрдХрдлрд╝рд╛рдЗрд▓реНрд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЖрджреА рд╣реИрдВ, рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдЗрд╕ рдЖрджреЗрд╢ рд╕реЗ рдереЛрдбрд╝рд╛ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ; рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдФрд░ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреА рдЖрджрдд рд╣реЛ рд╕рдХрддреА рд╣реИ:

libmin.a: $(LIBRARY_FILES).o
$(AR) ru $@ $? # рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХреА рдЧрдИ!!!!!!!
рд░реИрдирд▓рд┐рдм $(рдЖрдЙрдЯрдкреБрдЯ)

рдХрд╣рд╛рдБ $? (рдЬрд┐рд╕реЗ "$(changed_inputs)" рдХреЗ рдирд╛рдо рд╕реЗ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ) рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡реИрд░рд┐рдПрдмрд▓ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рдХрд┐рд╕реА рднреА рдлрд╛рдЗрд▓ рд╕реЗ рд╣реИ
рдЬреЛ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдФрд░ $@ рд▓рдЧрднрдЧ рд╡рд╣реА рд╣реИ
"$(рдЖрдЙрдЯрдкреБрдЯ)" рдХреЗ рд░реВрдк рдореЗрдВред

рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИ:

┬╖ рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдПрдХ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рд╣рдЯрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдЕрднреА рднреА рдЕрдВрджрд░ рд╣реИ
рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╢реБрд░реВ рд╕реЗ рджреЛрдмрд╛рд░рд╛ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреБрдЫ рднреА
рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдЬреБрдбрд╝реЗ рд▓рд┐рдВрдХ рдкреБрд░рд╛рдиреЗ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ .o рдлрд╝рд╛рдЗрд▓, рдФрд░ рд╡рд╣ рдЖрдкрдХреА рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рд╕рдХрддреА рд╣реИ
рдмрдирд╛рддрд╛ рд╣реИ. (рдЬрдм рдореИрдВ рдбреЗрдб рдХреЛрдб рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ рддреЛ рдПрдХ рдмрд╛рд░ рдореИрдВ рдЗрд╕рд╕реЗ рдкреВрд░реА рддрд░рд╣ рднреНрд░рдорд┐рдд рд╣реЛ рдЧрдпрд╛ рдерд╛
рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ: рдореИрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣рдЯрд╛рддрд╛ рд░рд╣рд╛ рдФрд░ рдпрд╣ рдЕрднреА рднреА рд▓рд┐рдВрдХ рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдХреЛрдб рдерд╛
рдореГрддред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рдХрд┐рд╕реА рдФрд░ рдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдмрдирд╛рдпрд╛, рддреЛ рдЙрд╕рдиреЗ рдХреЛрдИ рднреА рд▓рд┐рдВрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛
рдЕрдзрд┐рдХ! рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдкреБрд░рд╛рдирд╛ .o рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрднреА рднреА рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдереАрдВред)

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "ar" рдХреЗ рдЖрдкрдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдФрд░ "ar" рдХреЗ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк
"рдЖрд░" рдХреЗ рдмрдЬрд╛рдп "рдХреНрдпреВ" рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
рд╡рд╣реА .o рдЕрдВрджрд░ .a рдлрд╝рд╛рдЗрд▓ред рдпрджрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ
рд▓рд┐рдВрдХрд░ рдЙрди рджреЛрдиреЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╢рд╛рдпрдж рдПрдХ рдмреБрд░реА рдмрд╛рдд рд╣реИ.

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВред рдпрд╣ рдХрд░реЗрдЧрд╛
рдХрд┐рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдирд╣реАрдВ; рдкрд░
рдПрдХ рдЖрдзреБрдирд┐рдХ рдХрдВрдкреНрдпреВрдЯрд░, рдЗрд╕рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреА рдорд╛рддреНрд░рд╛ ar рдХрд╛рд░реНрдпрдХреНрд░рдо рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ
рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рд▓реНрдб рдореЗрдВ рдХреНрдпрд╛ рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ
рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

┬╖ рдореЗрдХрдк рдЬрд┐рди рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рд╣реА рдирд┐рд░реНрдорд╛рдг рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд╣ рдРрд╕рд╛ рдХрд░реЗрдЧрд╛
рдпрджрд┐ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд▓рдХреНрд╖реНрдп рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдмрджрд▓ рдЧрдИ рд╣реИ рддреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред рд▓реЗрдХрд┐рди
$ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рд╡реИрд░рд┐рдПрдмрд▓ рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рдмрд╛рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,
рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рдЕрд▓рдЧ рд╣реИ. (рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рджрдмрд╛ рд╕рдХрддреЗ рд╣реИрдВ
":рдмрд┐рд▓реНрдб_рдЪреЗрдХ рдЗрдЧреНрдиреЛрд░_рдПрдХреНрд╢рди"; рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП makepp_build_check рджреЗрдЦреЗрдВред)

┬╖ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрд╕реЗ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рд╕реЗ рдореЗрдХрдк рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрд╕рдВрднрд╡ рдмрдирд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрд┐рд▓реНрдб рдХреИрд╢ рдореЗрдВ рдареАрдХ рд╕реЗ рдбрд╛рд▓реЗрдВ (рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП makepp_build_cache рджреЗрдЦреЗрдВ)ред

рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдХрд╖реНрдЯрдХрд╛рд░реА рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐
рдкрд░рд┐рдпреЛрдЬрдирд╛ рддреЗрдЬреА рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░ рд╕реЗ рдЧреБрдЬрд░ рд░рд╣реА рд╣реИ рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рд▓рдЧрд╛рддрд╛рд░ рдмрджрд▓ рд░рд╣реА рд╣реИред рдпрд╣
рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ:

libmin.a: $(only_targets *.o)
&rm $(рдЖрдЙрдЯрдкреБрдЯ)
$(AR) рдХрд░реЛрдбрд╝ $(рдЖрдЙрдЯрдкреБрдЯ) $(рдЗрдирдкреБрдЯ)

рдпрд╣ рд╕рдм рдбрд╛рд▓рддрд╛ рд╣реИ .o рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдлрд╝рд╛рдЗрд▓реЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВред рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб
рдХрд┐рд╕реА рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ .o рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЗрдВ рди рд╣реЛрдиреЗ рдкрд░ рднреА рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧреА
рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ.

"only_targets" рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ .o рдРрд╕реА рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬрд┐рдирдореЗрдВ рд╕рдВрдЧрддрддрд╛ рдирд╣реАрдВ рд╣реИ
рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдм рдФрд░ рдирд╣реАрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмреБрд▓рд╛рдИ рдЧрдИ рд╣реИ xyz.c рдЬреЛ рдЖрдк рдЕрдкрдиреЗ рдореЗрдВ рдбрд╛рд▓рддреЗ рдереЗ
рдкреБрд╕реНрддрдХрд╛рд▓рдпред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдБ рдПрдХ рд╣реИ xyz.o рдлрд╝рд╛рдЗрд▓ рдЗрдзрд░ рдЙрдзрд░ рдкрдбрд╝реА рд╣реИ. рдЕрдм рдЖрдк рдбрд┐рд▓реАрдЯ рдХрд░ рджреАрдЬрд┐рдП xyz.c
рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рд╣рдЯрд╛рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ xyz.o. "рдХреЗрд╡рд▓_рд▓рдХреНрд╖реНрдп" рдХреЗ рдмрд┐рдирд╛
рд╕рдорд╛рд░реЛрд╣, xyz.o рдХреА рд╕реВрдЪреА рдореЗрдВ рдЕрднреА рднреА рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ .o рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдлрд╝рд╛рдЗрд▓реЗрдВ.

рдЗрдорд╛рд░рдд a рдЧрддрд┐рд╢реАрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп

рдЧрддрд┐рд╢реАрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рдореИрдВ рдЕрддреНрдпрдзрд┐рдХ рдЪрд╛рд╣реВрдБрдЧрд╛
рдЧрддрд┐рд╢реАрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП libtool рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░реЗрдВ (рджреЗрдЦреЗрдВ)ред
<http://www.gnu.org/software/libtool/>), рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ
рдЖрдкрдХрд╛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо, рдФрд░ рддрд╛рдХрд┐ рдЬрдм рдЖрдк рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ рддрдм рднреА рдЖрдкрдХреА рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдХрд╛рдо рдХрд░рддреА рд░рд╣реЗрдЧреА
рдЕрд▓рдЧ рдУрдПрд╕. рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП libtool рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВред рдпрд╣рд╛рдБ рдПрдХ рдирдореВрдирд╛ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рд╣реИ:

рд▓рд┐рдмрдЯреВрд▓ := рд▓рд┐рдмрдЯреВрд▓

libflick.la : $(only_targets *.lo)
$(LIBTOOL) --рдореЛрдб=рд▓рд┐рдВрдХ $(CC) $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

%рд▓реЛ : %c
$(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(INCLUDES) -c $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

рдЗрдорд╛рд░рдд on рдХрдИ рд╡рд┐рднрд┐рдиреНрди рдорд╢реАрдиреЛрдВ or рдиреЗрдЯрд╡рд░реНрдХ
рдореЗрдХрдлрд╝рд╛рдЗрд▓реНрд╕ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдХрд╖реНрдЯрдкреНрд░рдж рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рд▓рдЧрднрдЧ рдХрднреА рднреА рдЖрдкрдХреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ
рдХрд┐рд╕реА рднрд┐рдиреНрди рдорд╢реАрди рдпрд╛ рднрд┐рдиреНрди рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдореЗрдХрдлрд╝рд╛рдЗрд▓реНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ
рдЧреНрд░рд╣ рдкрд░ рд╣рд░ рд╕рдВрднрд╡ рдорд╢реАрди, рддреЛ рдЖрдкрдХреЛ рд╕рдВрднрд╡рддрдГ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
рд▓рд┐рдЦреА рд╣реБрдИ рдХрд╣рд╛рдиреАред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╢реАрдиреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рддреЛ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ
рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдЙрдкрдпреЛрдЧ a рд╡рд┐рднрд┐рдиреНрди рд╢рд╛рдорд┐рд▓ рдкрдЯреНрдЯрд┐рдХрд╛ in рд╕рдм la рд╡рд╛рддрд╛рд╡рд░рдг

рдкреНрд░рддреНрдпреЗрдХ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЖрдк рдЗрд╕ рддрд░рд╣ рдПрдХ рдкрдВрдХреНрддрд┐ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

system_defs.mk рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ

рдлрд╝рд╛рдЗрд▓ system_defs.mk рд╕рд╛рдорд╛рдиреНрдпрддрдГ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛
рдкрд░реНрдпрд╛рд╡рд░рдгред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреА рдмрд┐рд▓реНрдб рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рднреА рдорд╢реАрдиреЛрдВ рдкрд░ рд╕рдорд╛рди рд╣реЛ, рддреЛ рдбрд╛рд▓реЗрдВ
system_defs.mk рдмрд┐рд▓реНрдб рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдКрдкрд░ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, рдпрд╛ рдлрд┐рд░ рдПрдХ рд╕рдореНрдорд┐рд▓рд┐рдд рдкрде рдкреНрд░рджрд╛рди рдХрд░реЗрдВ
"-I" рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдХрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдРрд╕рд╛ рдХрд░рдирд╛ рдЖрдо рддреМрд░ рдкрд░ рдХрд╖реНрдЯрджрд╛рдпрдХ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╣реЛрдВ рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдорддрднреЗрджред

рдЙрдкрдпреЛрдЧ if рдмрдпрд╛рди

рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рд╕рдмрд╕реЗ рдЦрд╝рд░рд╛рдм рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

ifsys i386
рд╕реАрд╕реА := рдЬреАрд╕реАрд╕реА
рдЕрдиреНрдпрдерд╛ ifsys sun4u
рд╕реАрд╕реА := рд╕реАрд╕реА
рдЕрдиреНрдпрдерд╛ ifsys hpux11
рд╕реАрд╕реА = рд╕реА89
endif

рдпрджрд┐ рдЖрдкрдХреЛ рдмрд╕ рдХреБрдЫ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдпрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдвреВрдВрдврдирд╛ рд╣реИ рдпрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реИ
рд╕реНрдерд╛рди, рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред

рдЦреЛрдЬ_рдкреНрд░реЛрдЧреНрд░рд╛рдо, рдкреНрд░рдердо_рдЙрдкрд▓рдмреНрдз, рдлрд╝рд╛рдЗрд▓ рдвреВрдВрдвреЗ

рдпреЗ рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рднрд┐рдиреНрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВ
рдЙрдкрдпреБрдХреНрдд рдлрд╝рд╛рдЗрд▓реЗрдВ. рдмреЗрд╢рдХ, рдпрд╣ рдХреЙрдиреНрдлрд┐рдЧрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд┐рддрдирд╛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рд▓рдЧрддрд╛ рд╣реИ
рдЙрдкрдпреЛрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реВрдБ:

CXX ;= $(find_program g++ c++ pg++ cxx CC aCC)
# рдкрд╣рд▓рд╛ C++ рдХрдВрдкрд╛рдЗрд▓рд░ рдЪреБрдиреЗрдВ рдЬреЛ PATH рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред
# (рд╕рдВрдпреЛрдЧ рд╕реЗ, рдпрджрд┐ рдЖрдк CXX рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣
# рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИред)
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))
# $(findfile ) рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдХреЗрдд рдореЗрдВ tcl.h рдвреВрдВрдврддрд╛ рд╣реИ
# рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рдФрд░ рдкреВрд░рд╛ рдкрде рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпреЗ рддреЛ рддрдм рд╣реИ
# рдХреЛ рдЕрд▓рдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдВрдХрд▓рди рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
# рдлрд╝рд╛рдЗрд▓ рдирд╛рдо (рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдФрд░ -I рдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рд▓рдЧрд╛рдПрдВред
%.o : %.рд╕реАрдкреАрдкреА
$(CXX) $(CXXFLAGS) $(TCL_INCLUDE) $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

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
/рдиреЗрдЯ/na1/tcl8.4a3/lib/libtcl8.4.a
/рдиреЗрдЯ/na1/tcl8.4a3/lib/libtcl8.4.sl))
# рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ рдЯреАрд╕реАрдПрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╣рд╛рдВ рд╣реИред рдпрд╣ рддреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣реИ
# рд▓рд┐рдВрдХ рдХрдорд╛рдВрдб рдкрд░ рд╕реВрдЪреАрдмрджреНрдз:
рдореЗрд░рд╛_рдкреНрд░реЛрдЧреНрд░рд╛рдо : *.рдУ
$(CXX) $(CXXFLAGS) $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ) $(TCL_LIB)

рд▓реЗрдирд╛ рд▓рд╛рдн of рдкрд░реНрд▓ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд░реЗрдВ-

рдпрджрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдЙрдкрд░реЛрдХреНрдд рддрдХрдиреАрдХреЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ
рдЖрдкрдХрд╛ рд╕рд┐рд╕реНрдЯрдо, рдЬреИрд╕реЗ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд▓рдВрдмрд╛ рдбрдмрд▓ рдореМрдЬреВрдж рд╣реИ, рдпрд╛ рдмрд╛рдЗрдЯ рдСрд░реНрдбрд░ рдХреНрдпрд╛ рд╣реИред рддрдерд╛рдкрд┐,
рдкрд░реНрд▓ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрди рдЪреАрдЬреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░ рд▓реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕рдХреЗ рдЙрддреНрддрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░реНрд▓ рдХреА рдСрдЯреЛрдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕рдХреЗ рд╕рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддреА рд╣реИ
%рдХреЙрдиреНрдлрд┐рдЧ рд╣реИрд╢. рдореЗрдХрдк рдореЗрдВ рд╕реАрдзреЗ рдкрд░реНрд▓ рд╣реИрд╢ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдкрд░реНрд▓ рдореЗрдВ рдбреНрд░реЙрдк рдХрд░реЗрдВ рдФрд░ рд╕реНрдХреЗрд▓рд░ рд╡реИрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЬреЛ рдореЗрдХрдк рд╕реЗ рд╕реАрдзреЗ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рд╣реИрдВ:

perl_begin
# рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИрд╢ рд╕реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдХреЙрдиреНрдлрд┐рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ;
$рд╕реАрд╕реА = $рдХреЙрдиреНрдлрд┐рдЧ{'рд╕реАрд╕реА'}; # рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░реНрд▓ рдиреЗ рдХрд┐рдпрд╛ рдерд╛;
$byteorder_flags = "-DBYTEORDER=$Config{'byteorder'}";
$longdouble_Defined = $Config{'d_longdbl'} eq 'define';
$CFLAGS_for_shared_libs = $Config{'cccdlflags'};
$LDFLAGS_for_shared_libs = $Config{'ccdlflags'};
perl_end

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк 'рдпреВрдЬ рдХреЙрдиреНрдлрд┐рдЧ' рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк "$(perl )" рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ
рдЗрд╕:

SHARED_LIB_EXTENSION := $(perl $Config{'dlext'})

%Config рд╣реИрд╢ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреМрди рд╕реА рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрд▓рдмреНрдз рд╣реИ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП "perldoc config" рдЯрд╛рдЗрдк рдХрд░реЗрдВред

рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░, рдмрд╛рдЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрд▓ рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдПрдХ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реИ
рдСрд░реНрдбрд░, рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рдЬрд┐рдирдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдХреЙрдиреНрдлрд┐рдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХреБрдЫ
рдЗрд╕рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЬреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЪреАрдЬрд╝реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рд╡рд╣ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ
рд╡реИрдзред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, $Config{'cc'} рдЙрд╕ C рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдкрд░реНрд▓ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛,
рдЬреЛ рд╢рд╛рдпрдж рд╡рд╣реА C рдХрдВрдкрд╛рдЗрд▓рд░ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рднреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░, рдЪреВрдБрдХрд┐ рд╕рдВрднрд╡рддрдГ рдЖрдкрдиреЗ рдкрд░реНрд▓ рдХреЛ рдмрд╛рдЗрдирд░реА рдкреИрдХреЗрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИред

рдЯрд┐рдкреНрд╕ рдПрд╕рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб
рдорд┐рд▓рд╛рди рд╕рдм рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕рд┐рд╡рд╛рдп a рдХреБрдЫ рд╕рдмрд╕реЗрдЯ

рдореЗрдХрдкреНрдк рдХреЗ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдХреЗ рдкрд╛рд╕ рдлрд┐рд▓рд╣рд╛рд▓ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдорд┐рд▓рд╛рди рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рд╕рд┐рд╡рд╛рдп рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд
рд╕реЗрдЯ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИ
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ. рдпрджрд┐ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рд╛рд░рдВрдн рд╣реЛрддреЗ рд╣реИрдВ
рдкрд░реАрдХреНрд╖рдг, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рдмрд╛рд╣рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

libproduction.a: $(рдлрд╝рд┐рд▓реНрдЯрд░_рдЖрдЙрдЯ рдЯреЗрд╕реНрдЯ*, $(рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб *.o))

"$(рдлрд╝рд┐рд▓реНрдЯрд░ )" рдФрд░ "$(рдлрд╝рд┐рд▓реНрдЯрд░_рдЖрдЙрдЯ )" рдлрд╝рдВрдХреНрд╢рдВрд╕ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕реЗрдЯ рд╣реИрдВ
рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реЗрдЯ рдЗрдВрдЯрд░рд╕реЗрдХреНрд╢рди рдФрд░ рдЕрдВрддрд░ рд╕рдВрдЪрд╛рд▓рдиред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,

SUBDIRS ;= $(filter_out *test* *$(ARCH)*, $(shell find . -type d -print))
# рдЙрди рд╕рднреА рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рдпрд╣ рдирд╣реАрдВ рд╣реИ
# рдЙрдирдореЗрдВ "рдкрд░реАрдХреНрд╖рдг" рдпрд╛ $(ARCH)ред

$(рдлрд╝рд┐рд▓реНрдЯрд░ $(patsubst test_dir/test_%.o, %o, $(рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб test_dir/*.o)), \
$(рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб *.o))
# рд╡рд░реНрддрдорд╛рди рдореЗрдВ .o рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд▓реМрдЯрд╛рддрд╛ рд╣реИ
# рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдЧрдд рд╣реИ
# test_*.o рдлрд╝рд╛рдЗрд▓ test_dir рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВред
$(filter_out $(patsubst man/man3/%.3, %o, $(рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб man/man3/*.3)), \
$(рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб *.o))
# рд╡рд░реНрддрдорд╛рди рдореЗрдВ .o рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд▓реМрдЯрд╛рддрд╛ рд╣реИ
# рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдореИрдиреНрдпреБрдЕрд▓ рдкреЗрдЬ рдирд╣реАрдВ рд╣реИ
# man/man3 рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдорд╛рди рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рдеред

рдХрд╛ рдкреНрд░рдпреЛрдЧ la "$(only_targets )" рд╕рдорд╛рд░реЛрд╣ рд╕реЗрд╡рд╛ рдореЗрд░реЗ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдмрд╛рд╕реА .o рдлрд╝рд╛рдЗрд▓реЛрдВ

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдпрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ:

рдХрд╛рд░реНрдпрдХреНрд░рдо: *.рдУ
$(CC) $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЕрдм рдЖрдк рдПрдХ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рд╣рдЯрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╕рдВрдмрдВрдзрд┐рдд рдХреЛ рд╣рдЯрд╛рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ .o рдлрд╝рд╛рдЗрд▓,
рдпрд╣ рдЕрднреА рднреА рдЬреБрдбрд╝рд╛ рд░рд╣реЗрдЧрд╛ рднрд▓реЗ рд╣реА рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдореЗрдВ
рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдореЗрдХрдк рд╕рдВрднрд╡рддрдГ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рди рд▓реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рджреЗрдЧрд╛
рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд╕реВрдЪреА, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдирд╛ рд╣реЛрдЧрд╛:

рдХрд╛рд░реНрдпрдХреНрд░рдо: $(only_targets *.o)
$(CC) $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

рдореЗрдХрдкреНрдк рдХреЛ рдмрд╛рд╕реА рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдкрддрд╛ .o рдХреЛрдИ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рд╣реИ
рдЪрд▓рд╛ рдЧрдпрд╛, рдЗрд╕рд▓рд┐рдП "$(only_targets )" рдлрд╝рдВрдХреНрд╢рди рдЗрд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рд╕реВрдЪреА рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рджреЗрдЧрд╛ред

рдЯрд┐рдкреНрд╕ рдПрд╕рдЯреА рд╡рд┐рднрд┐рдиреНрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ
рдореЗрдХрдк рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рдореБрдЦреНрдп рдХрд╛рд░рдг рдорд▓реНрдЯреАрдкрд▓ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдирд╛ рдерд╛
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рдореЗрдХрдк рдПрдХрд╛рдзрд┐рдХ рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рд╕реЗ рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдПрдХ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдирд┐рдпрдо рд╕реЗ рдареАрдХ рд╕реЗ рдирд┐рдкрдЯреЗрдВ рдЬреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ a рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдЕрд▓рдЧ рдореЗрдХрдлрд╝рд╛рдЗрд▓.

рдХреНрдпрд╛ рд╕реЗрд╡рд╛ рдореЗрд░реЗ do in рдЬрдЧрд╣ of рдкреБрдирд░рд╛рд╡рд░реНрддреА рдмрдирд╛рдирд╛

Makepp рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡рд░реНрддреА рдореЗрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ
рдХрд┐ рдЖрдк рдирд╣реАрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рддреЛ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдЖрдк рдРрд╕рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдЗрд╕рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдореЗрдХрдк рдореЗрдВ "рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдкреНрд░рдгрд╛рд▓реА" рджреЗрдЦреЗрдВ
рдкреБрдирд░рд╛рд╡рд░реНрддреА рдореЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рд╡реЗрдм рдкрд░ "рдкреБрдирд░рд╛рд╡рд░реНрддреА рдореЗрдХ рдХреЛ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ" рдЦреЛрдЬреЗрдВред

рдкреНрд░рддреНрдпреЗрдХ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ "рд╕рднреА" рд▓рдХреНрд╖реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡рд░реНрддреА рдореЗрдХ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рд╣реИ
рдЖрдорддреМрд░ рдкрд░ рдореЗрдХрдк рдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рджреЗрдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреМрди рд╕реЗ рд▓рдХреНрд╖реНрдп рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рд╕рдм рдХреБрдЫ рдбрд╛рд▓ рджреЗрддреЗ рд╣реИрдВ .o рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦреЗрдВ
рдореЗрдХрдлрд╛рдЗрд▓реНрд╕, рдлрд┐рд░ рдореЗрдХрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛ рдХрд┐ рдХреМрди рд╕реА рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ -
рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдкрдиреЗ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рдЙрди рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛ рд▓реЗрдВ рдЬрд┐рдирдХреА рдЬрд░реВрд░рдд рд╣реИ
рдЕрдВрддрд┐рдо рд▓рд┐рдВрдХрд┐рдВрдЧ рдЪрд░рдг рдХреЗ рд▓рд┐рдП. рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ.

рдПрдХ makefile рдПрд╕рдЯреА рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛: рд╕рд╛рде рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ

рдПрдХрд╛рдзрд┐рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрдо рддрд░реАрдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдбрд╛рд▓рдирд╛ рд╣реИ
рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдпрд╛ рдЙрд╕рд╕реЗ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдпрджрд┐ рдЖрдк рдбрд╛рд▓рддреЗ рд╣реИрдВ .o рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ
рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛, рдлрд┐рд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓реЛрдбрд┐рдВрдЧ ("рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓реЛрдбрд┐рдВрдЧ" рджреЗрдЦреЗрдВ)ред
makepp_build_algorithm) рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдореЗрдХрдлрд╝рд╛рдЗрд▓реЗрдВ рдвреВрдВрдв рд▓реЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ .o
рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░-рдирд┐рд░реНрднрд░ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ), рдлрд┐рд░ рдЖрдк
рд╕рдВрднрд╡рддрдГ рд╕рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдореЗрдХрдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ "load_makefile" рдХрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣рд╛рдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдирдореВрдирд╛ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдореЗрдХрдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдХрдИ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рд▓реЗрдХрд┐рди рджреЗрдЦреЗрдВ "рдХреНрдпрд╛ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рд▓рд╛рдЗрдмреНрд░реЗрд░реА?" makepp_cookbook рдореЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреЗ рдПрдХ рд╕рдореВрд╣ рд╕реЗ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдирд╛
рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛ):

# рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреА рдореЗрдХрдлрд╛рдЗрд▓:
рдХрд╛рд░реНрдпрдХреНрд░рдо: main.o **/*.la # рд╕рднреА рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рд╕реЗ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд▓рд┐рдВрдХред
$(LIBTOOL) --рдореЛрдб=рд▓рд┐рдВрдХ $(CC) $(CFLAGS) $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ) $(LIBS)

рд╢реАрд░реНрд╖ рд╕реНрддрд░реАрдп рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рд╣реА рдЪрд╛рд╣рд┐рдПред рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, рдЖрдк
рд╕рдВрднрд╡рддрдГ рдРрд╕рд╛ рдХреБрдЫ рдХрд░реЗрдЧрд╛:

# рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдореЗрдХрдлрд╝рд╛рдЗрд▓:
рдорд╛рдирдХ_defs.mk рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ # рдЦреЛрдЬреЗрдВ ., .., ../ .., рдЖрджрд┐ рдЬрдм рддрдХ рдпрд╣
# рд╕рдВрдХреЗрддрд┐рдд рд╕рдореНрдорд┐рд▓рд┐рдд рдлрд╝рд╛рдЗрд▓ рдвреВрдВрдврддрд╛ рд╣реИред
# рдпрд╣рд╛рдВ рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ
SPECIAL_FLAGS := -рдХреБрдЫ_рдХреБрдЫ_рдЕрд▓рдЧ_рдХрд░реЛ

рдпрджрд┐ рд▓рдХреНрд╖реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢ рджрд┐рдП рдЬрд╛рдПрдВ рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рд╕рдВрднрд╡рддрдГ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реЛ рд╕рдХрддреА рд╣реИ
рдХрд╛рдлреА рд╕рдорд╛рди рд╣реИрдВ.

рдЕрдВрдд рдореЗрдВ, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдЗрд╕рдореЗрдВ рдбрд╛рд▓реЗрдВрдЧреЗ рдорд╛рдирдХ_defs.mk рдлрд╝рд╛рдЗрд▓ (рдЬреЛ рд╕рдВрднрд╡рддрдГ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛ):

# рд╕рднреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдЪрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдирд┐рдпрдо рдмрдирд╛рдПрдВред
CFLAGS := -g -O2
INCLUDE_DIR := $(find_upwards рд╢рд╛рдорд┐рд▓ рд╣реИ)
# рдЦреЛрдЬреЗрдВ ., .., ../ .., рдЖрджрд┐ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдпрд╛
# рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдбрд╛рд▓рддреЗ рд╣реИрдВ
# рдЖрдкрдХреА рд╕рднреА рдлрд╝рд╛рдЗрд▓реЗрдВ рд╡рд╣рд╛рдВ рдореМрдЬреВрдж рд╣реЛрдВрдЧреА, рдРрд╕рд╛ рд╣реЛрдЧрд╛
# рдЙрдиреНрд╣реЗрдВ рд▓рдЧрддрд╛ рд╣реИред
рд╢рд╛рдорд┐рд▓ рд╣реИ := -I$(INCLUDE_DIR)

%рд▓реЛ : %c
$(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(INCLUDES) -c $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

lib$(relative_to ., ..).la: $(only_targets *.lo)
$(LIBTOOL) --рдореЛрдб=рд▓рд┐рдВрдХ $(CC) $(CFLAGS) -o $(рдЖрдЙрдЯрдкреБрдЯ) $(рдЗрдирдкреБрдЯ)
# $(relative_to ., ..) рд╡рд░реНрддрдорд╛рди рдХрд╛ рдирд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИ
# рдКрдкрд░реА рд╕реНрддрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛
# рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛. рддреЛ рдпрджрд┐ рдпрд╣ рдореЗрдХрдлрд╝рд╛рдЗрд▓ xyz/Makefile рд╣реИ,
# рдпрд╣ рдирд┐рдпрдо xyz/libxyz.la рдмрдирд╛рдПрдЧрд╛.

# рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рд╢рд╛рдорд┐рд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ:
$(INCLUDE_DIR)/public_%.h : public_%.h
:build_check symlnk
&ln -fr $(рдЗрдирдкреБрдЯ) $(рдЖрдЙрдЯрдкреБрдЯ)

рдПрдХ makefile рдПрд╕рдЯреА рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛: рд╕реНрдкрд╖реНрдЯ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ

рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рд╕рдм рдХреБрдЫ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ .o рдлрд┐рд░ рдПрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░-рдирд┐рд░реНрднрд░ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

# рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреА рдореЗрдХрдлрд╛рдЗрд▓:
MAKEFILES := $(рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб **/Makeppfile) # рд╕рднреА рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕реВрдЪреА
# рд╕реЗ рдореЗрдХрдлрд╝рд╛рдЗрд▓реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

Load_makefile $(MAKFILES) # рдЙрди рд╕рднреА рдХреЛ рд▓реЛрдб рдХрд░реЗрдВред

рдорд╛рдирдХ_defs.mk рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ # main.o рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓ рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рдХрд╛рд░реНрдпрдХреНрд░рдо: $(ARCH)/main.o */**/$(ARCH)/*.la
$(LIBTOOL) --рдореЛрдб=рд▓рд┐рдВрдХ $(CC) $(CFLAGS) $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ) $(LIBS)
# */**/$(ARCH) рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рддрд╛ рд╣реИ
# $(ARCH), рдЬрд╣рд╛рдВ рд╣рдо рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ
# рдПрдХ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА.

рдкреНрд░рддреНрдпреЗрдХ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдмрд┐рд▓реНрдХреБрд▓ рдкрд╣рд▓реЗ рдЬреИрд╕рд╛ рд╣реА рд╣реЛрдЧрд╛:

# рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдореЗрдХрдлрд╝рд╛рдЗрд▓:
рдорд╛рдирдХ_defs.mk рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
#...рд╡реЗрд░рд┐рдПрдмрд▓ рдпрд╣рд╛рдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ

рдФрд░ рдЕрдВрдд рдореЗрдВ, рдорд╛рдирдХ_defs.mk рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛрдЧрд╛:

# рд╕рднреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдЪрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдирд┐рдпрдо рдмрдирд╛рдПрдВред
ARCH ;= $(рдЦреЛрд▓ рдЕрдирд╛рдо -s)-$(рдЦреЛрд▓ рдЕрдирд╛рдо -m)-$(рдЦреЛрд▓ рдЕрдирд╛рдо -r)
# рдХрднреА-рдХрднреА рд▓реЛрдЧ рдХреЗрд╡рд▓ $(shell uname -m) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди
# рдпрд╣ FreeBSD рдФрд░ Linux рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реЛрдЧрд╛
# рдПрдХ x86. рд▓рд┐рдирдХреНрд╕ рдкрд░ -r рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ,
# рд▓реЗрдХрд┐рди рдЕрдиреНрдп OSes рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ: рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЗ рд▓рд┐рдП
# SunOS 5.8 рдЖрдорддреМрд░ рдкрд░ SunOS 5.7 рдкрд░ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред
&mkdir -p $(ARCH) # рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореМрдЬреВрдж рд╣реИред
CFLAGS := -g -O2
INCLUDE_DIR := $(find_upwards рд╢рд╛рдорд┐рд▓ рд╣реИ)
# рдЦреЛрдЬреЗрдВ ., .., ../ .., рдЖрджрд┐ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдпрд╛
# рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдбрд╛рд▓рддреЗ рд╣реИрдВ
# рдЖрдкрдХреА рд╕рднреА рдлрд╝рд╛рдЗрд▓реЗрдВ рд╡рд╣рд╛рдВ рдореМрдЬреВрдж рд╣реЛрдВрдЧреА, рдРрд╕рд╛ рд╣реЛрдЧрд╛
# рдЙрдиреНрд╣реЗрдВ рд▓рдЧрддрд╛ рд╣реИред
рд╢рд╛рдорд┐рд▓ рд╣реИ := -I$(INCLUDE_DIR)

$(ARCH)/%lo : %c
$(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(INCLUDES) -c $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

$(рдЖрд░реНрдХ)/ рджрд╛рдпрд┐рддреНрд╡$(рд╕рд╛рдкреЗрдХреНрд╖_рд╕реЗ ., ..).la: $(only_targets *.lo)
$(LIBTOOL) --рдореЛрдб=рд▓рд┐рдВрдХ $(CC) $(CFLAGS) -o $(рдЖрдЙрдЯрдкреБрдЯ) $(рдЗрдирдкреБрдЯ)
# $(relative_to ., ..) рд╡рд░реНрддрдорд╛рди рдХрд╛ рдирд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИ
# рдКрдкрд░реА рд╕реНрддрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛
# рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛. рддреЛ рдпрджрд┐ рдпрд╣ рдореЗрдХрдлрд╝рд╛рдЗрд▓ xyz/Makefile рд╣реИ,
# рдпрд╣ рдирд┐рдпрдо xyz/$(ARCH)/libxyz.la рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛ред

# рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ:
$(INCLUDE_DIR)/public_%.h : public_%.h
рдФрд░ рд╕реАрдкреА $ (рдЗрдирдкреБрдЯ) $ (рдЖрдЙрдЯрдкреБрдЯ)

рд╕реНрд╡рддрдГ рдХрдорд╛рдирд╛ рдФрд░ la рдореЗрдХрдлрд╝рд╛рдЗрд▓реНрд╕

рдпрджрд┐ рдЖрдкрдХреА рд╕рднреА рдореЗрдХрдлрд╝рд╛рдЗрд▓реЗрдВ рдмреЗрд╣рдж рд╕рдорд╛рди рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИ), рддреЛ рдЖрдк Makepp рдХреЛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ
рдпрджрд┐ рд╡реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ рддреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдмрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдЕрдкрдиреЗ рд╢реАрд░реНрд╖-рд╕реНрддрд░ рдкрд░ рдЬреЛрдбрд╝реЗрдВ
рдореЗрдХрдлрд╝рд╛рдЗрд▓:

SUBDIRS := $(рдлрд╝рд┐рд▓реНрдЯрд░_рдЖрдЙрдЯ рдЕрд╡рд╛рдВрдЫрд┐рдд_dir1 рдЕрд╡рд╛рдВрдЫрд┐рдд_dir2, $(рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб */**))
$(foreach)/Makeppfile: : foreach $(SUBDIRS)
&echo "standard_defs.mk рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ" -o $(рдЖрдЙрдЯрдкреБрдЯ)
&echo "_include everything_defs.mk" -o >>$(рдЖрдЙрдЯрдкреБрдЯ)
# рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдЕрддрд┐рд░рд┐рдХреНрдд_defs.mk рдореМрдЬреВрдж рд╣реИ, рддреЛ
# рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрджрд┐ рдпрд╣ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реИ,
# _рд╢рд╛рдорд┐рд▓ рдХрдерди рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдм рдореЗрдХрдлрд╝рд╛рдЗрд▓реЗрдВ рд╕реНрд╡рдпрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреАред

рдПрдХ makefile рдХреЗрд╡рд▓ at la рдКрдкрд░ рдХрд╛ рд╕реНрддрд░

рдпрджрд┐ рдЖрдкрдХреА рд╕рднреА рдореЗрдХрдлрд╝рд╛рдЗрд▓реЗрдВ рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рдЖрдк рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ: рдореБрдЭреЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдХреНрдпреЛрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
рд╕реНрддрд░? рдпрд╣ рд╕рдм рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдбрд╛рд▓рд╛ рдЧрдпрд╛?

рд╣рд╛рдБ, рдпреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдореБрдЦреНрдп рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдХрд▓реНрдкред рджреВрд╕рд░рд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛
рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдирд╛ рд╕рдВрднрд╡рддрдГ рдереЛрдбрд╝рд╛ рдХрдард┐рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

# рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдореЗрдХрдлрд╝рд╛рдЗрд▓ред рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рддрд╛ рд╣реИ
# рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рд╕реЗ рдмрд╛рд╣рд░ред (рдКрдкрд░ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдЦреЗрдВ
# рдЖрдк рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд▓рд┐рдВрдХрд┐рдВрдЧ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдмрдЬрд╛рдп # рджреГрд╖реНрдЯрд┐рдХреЛрдгред)
makepp_percent_subdirs := 1 # % рдХреЛ рдПрдХрд╛рдзрд┐рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВред
SUBDIRS := $(filter_out *CVS* рдЕрдиреНрдп-рдЕрд╡рд╛рдВрдЫрд┐рдд_dirs $(рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб **))
CFLAGS := -g -O2
рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реИ := -рд╢рд╛рдорд┐рд▓ рд╣реИ

%.рд▓реЛ: %.рд╕реА
$(LIBTOOL) --рдореЛрдб=рд╕рдВрдХрд▓рди $(CC) $(рд╢рд╛рдорд┐рд▓ рд╣реИ) $(CFLAGS) -c $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

$(foreach)/ рджрд╛рдпрд┐рддреНрд╡$(notdir $(foreach)).la: $(foreach)/*.lo : foreach $(SUBDIRS)
$(LIBTOOL) --рдореЛрдб=рд▓рд┐рдВрдХ $(CC) $(CFLAGS) -o $(рдЖрдЙрдЯрдкреБрдЯ) $(рдЗрдирдкреБрдЯ)
# рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рдпрдо.

рдХрд╛рд░реНрдпрдХреНрд░рдо: main.o **/*.la
$(LIBTOOL) --рдореЛрдб=рд▓рд┐рдВрдХ $(CC) $(CFLAGS) -o $(рдЖрдЙрдЯрдкреБрдЯ) $(рдЗрдирдкреБрдЯ)

include/$(notdir $(foreach)) : $(foreach): foreach **/public_*.h
рдФрд░ рд╕реАрдкреА $ (рдЗрдирдкреБрдЯ) $ (рдЖрдЙрдЯрдкреБрдЯ)
#рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдирдХрд▓ рдХрд░рдиреЗ рдХрд╛ рдирдореВрдирд╛ рдирд┐рдпрдо
# .h рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╣реА рд╕реНрдерд╛рди рдкрд░ рдкрд╣реБрдБрдЪрд╛рдПрдБред

A рд╕реНрд╡рдЪреНрдЫ рд▓рдХреНрд╖реНрдп

рдкрд╛рд░рдВрдкрд░рд┐рдХ рдореЗрдХрдлрд╝рд╛рдЗрд▓реНрд╕ рдореЗрдВ рдПрдХ рд╕рд╛рдлрд╝ рд▓рдХреНрд╖реНрдп рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЬреЛ рдХреБрдЫ рднреА рдерд╛ рдЙрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
рдмрдирд╛рдирд╛ред рдРрд╕реЗ рддреАрди рдХрд╛рд░рдг рд╣реИрдВ рдЬрд┐рдирдХреА рд╡рдЬрд╣ рд╕реЗ рдЖрдкрдХреЛ рдореЗрдХрдк рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

1. рдореЗрдХрдкреНрдк рд╕рд╣реА рдирд┐рд░реНрдорд╛рдг рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рд╕рдВрднрд╡ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рддреЛ рд╣рддрд╛рд╢ "рдореИрдВ рдирд╣реАрдВ рдХрд░рддрд╛
рдЬрд╛рдиреЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ", рдЖрдкрдХреЛ рд╢реВрдиреНрдп рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рдирд╛ рдЕрддреАрдд рдХреА рдмрд╛рдд рд╣реИред

2. рд▓реЛрдЧ рдХрднреА-рдХрднреА рдПрдХ рд╕рд╛рде рджреЛ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рдХрд╛рдо рдХрд░рдХреЗ рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ:
"рд╕рдм рд╕рд╛рдлрд╝ рдХрд░реЛ"ред рдпрд╣ рдореЗрдХрдк рдХреЗ рд╕реНрдорд╛рд░реНрдЯ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЛ рднреНрд░рдорд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд╣реЛрдЧрд╛
рдХреБрдЫ рднреА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рддрдереНрдп рдЬрд╛рди рд▓реЗрдВред рдЗрд╕рдХреЗ рдмрд╛рдж рд╕реНрд╡рдЪреНрдЫ рдХреНрд░рд┐рдпрд╛ рдЖрддреА рд╣реИ, рдЬреЛ рд╣реЛрддреА рд╣реИ
рдореЗрдХрдк рдХреЛ рдпрд╣ рди рдмрддрд╛рдПрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреБрдЫ рдХреЛ рдкреВрд░реНрд╡рд╡рдд рдХрд░рддрд╛ рд╣реИ -)ред
рдмрд┐рд▓реНрдб рдЯреВрд▓ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣реИ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд)ред рдлрд┐рд░ рдЖрддрд╛ рд╣реИ "рд╕рднреА", рд▓реЗрдХрд┐рди рдЕрджреНрдпрддрд┐рдд рдлрд╝рд╛рдЗрд▓реЗрдВ,
рдЬреЛ рд╡рд╣рд╛рдВ рд░рд╣рд╕реНрдпрдордп рддрд░реАрдХреЗ рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдП рд╣реИрдВред

3. "makeppclean" рдХрдорд╛рдВрдб рд╣реИ, рдЬреЛ рд╡рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗред

рдлрд┐рд░ рднреА рд╣рдордиреЗ рдЗрд╕ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдЦрдВрдб рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдмрддрд╛рддрд╛ рд╣реИ
рдореЗрдХрдк рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: "рдХреНрд▓реАрди" рдирд╛рдордХ рдПрдХ рдирдХрд▓реА рд▓рдХреНрд╖реНрдп рдХреЗрд╡рд▓ рдХрдорд╛рдВрдб рдХреЗ рдПрдХ рд╕реЗрдЯ рдХрд╛ рдирд╛рдо рд╣реИ
рдореЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣рдЯрд╛ рджреЗрдВред рдЖрдорддреМрд░ рдкрд░ рд╕рд╛рдлрд╝ рд▓рдХреНрд╖реНрдп рджрд┐рдЦрддрд╛ рд╣реИ
рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

$ (рдлреЛрдиреА рдХреНрд▓реАрди):
&rm -fm $(рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб *.o .makepp_log)
# -m рдФрд░ .makepp_log рдореЗрдХрдкреНрдк рдХреЗ рд╕рднреА рдЬрдВрдХ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рджрд┐рд▓рд╛рддрд╛ рд╣реИред

рдЬрд┐рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдк рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдореЗрдХрдк рдХреЛ рднреА рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ
рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣рдЯрд╛ рджреЗрдВ рдЬреЛ рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдмрдирд╛рдирд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣:

$ (рдлреЛрдиреА рдХреНрд▓реАрди):
&rm -fm .makepp_log $(only_targets *)

рдЗрд╕рдХрд╛ рдпрд╣ рд▓рд╛рдн рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреА рдХреЛрдИ рднреА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ,
рдЙрдиреНрд╣реЗрдВ рднреА рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛; рджреВрд╕рд░реА рдУрд░, рдмрд╛рд╕реА .o рдлрд╝рд╛рдЗрд▓реЗрдВ (рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬреЛ рд╣реБрдЖ рдХрд░рддреА рдереАрдВ
рдирд┐рд░реНрдорд╛рдг рдпреЛрдЧреНрдп рд▓реЗрдХрд┐рди рдЬрд┐рд╕рдХреА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рд╣рдЯрд╛ рджреА рдЧрдИ рд╣реИ) рд╣рдЯрд╛рдИ рдирд╣реАрдВ рдЬрд╛рдПрдЧреАред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдРрд╕рд╛ рдирд┐рд░реНрдорд╛рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдореЗрдХрдлрд╝рд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рддреЛ рдЖрдкрдХрд╛ рд╢реАрд░реНрд╖-
рд▓реЗрд╡рд▓ рдореЗрдХрдлрд╝рд╛рдЗрд▓ "рд╕реНрд╡рдЪреНрдЫ" рд▓рдХреНрд╖реНрдп (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдирдХрд▓реА рд▓рдХреНрд╖реНрдп) рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдореЗрдХрдлрд╝рд╛рдЗрд▓:

# рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдореЗрдХрдлрд╝рд╛рдЗрд▓
рд╕рдмрдбрд┐рд░реНрд╕ := рд╕рдм1 рд╕рдм2

# рдпрд╣рд╛рдВ рдирд┐рдпрдо рдмрдирд╛рдПрдВ

# рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рд╕рдлрд╛рдИ рдХрд░реЗрдВ:
$(рдлрдиреА рдХреНрд▓реАрди): $(SUBDIRS)/рдХреНрд▓реАрди
&rm -fm .makepp_log $(only_targets *)

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдЕрдкрдирд╛ "рд╕реНрд╡рдЪреНрдЫ" рд▓рдХреНрд╖реНрдп рдХреЗрд╡рд▓ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╕рднреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВ:

$ (рдлреЛрдиреА рдХреНрд▓реАрди):
&rm -fm $(only_targets **/*)

рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХреНрдпреВ.рдЯреА рдПрдордУрд╕реА рдкреВрд░реНрд╡рдкреНрд░рдХреНрд░рдордХ
рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд▓рд┐рдП рдореЗрдХрдлрд╝рд╛рдЗрд▓ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рдиреЛрдХрд┐рдпрд╛ рдХреА рдХреНрдпреВрдЯреА рдЬреАрдпреВрдЖрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ)ред
<http://qt.nokia.com>). рдЗрд╕рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рдЪреАрдЬ рдЬреЛ рдереЛрдбрд╝реА рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рд╡рд╣ рд╣реИ рдЖрдк
рд╡рд┐рдЬреЗрдЯ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рд╡рд╛рд▓реА рдЕрдзрд┐рдХрд╛рдВрд╢ ".h" рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ "moc" рдирд╛рдордХ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрд╡рд╢реНрдп рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП,
рд▓реЗрдХрд┐рди рдЖрдк рдХрд┐рд╕реА рднреА ".h" рдлрд╝рд╛рдЗрд▓ рдкрд░ "moc" рдирд╣реАрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдЬреЛ "Q_OBJECT" рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред

рд╕реНрд╡рддрдГ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреМрди рдХреМрди рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдПрдордУрд╕реА рдлрд╝рд╛рдЗрд▓реЛрдВ

рдмреЗрд╢рдХ, рдЖрдк рдЙрди рд╕рднреА ".h" рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рди рдкрд░ "moc" рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рддреЗрдЬреА рд╕реЗ рдирдП рд╡рд┐рдЬреЗрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рдкрд░реЗрд╢рд╛рдиреА рднрд░рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реВрдЪреА рдХреЛ рдЕрджреНрдпрддрди рдХрд░рддреЗ рд░рд╣реЗрдВред рдЖрдк рдореЙрдХ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдирд┐рдЬрд╛рдд рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ
рдореЙрдбреНрдпреВрд▓ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ:

рдПрдордУрд╕реА := $(рдХреНрдпреВрдЯреАрдбреАрдЖрдИрдЖрд░)/рдмрд┐рди/рдПрдордУрд╕реА
рдореЙрдбреНрдпреВрд▓:= рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЬреЛ рднреА рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ
MOC_MODULES := $(patsubst .h, moc_%, $(&grep -l /Q_OBJECT/ *.h))
# Q_OBJECT рдореИрдХреНрд░реЛ рдХреЗ рд▓рд┐рдП рд╕рднреА .h рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдХреИрди рдХрд░рддрд╛ рд╣реИред

рдореЗрд░рд╛_рдкреНрд░реЛрдЧреНрд░рд╛рдо: $(MODULES).o $(MOC_MODULES).o
$(CXX) $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

moc_%cxx: %h # .h рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ moc рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рддрд╛ рд╣реИред
$(MOC) $(рдЗрдирдкреБрдЯ) -рдУ $(рдЖрдЙрдЯрдкреБрдЯ)

%o: %cxx
$(CXX) $(CXXFLAGS) -c $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╕реНрдХреИрди рдХрд░рддрд╛ рд╣реИ .h рд╣рд░ рдмрд╛рд░ рдЬрдм рдореЗрдХрдк рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдлрд╝рд╛рдЗрд▓реЗрдВ рдвреВрдВрдвреА рдЬрд╛рддреА рд╣реИрдВ
"Q_OBJECT" рдореИрдХреНрд░реЛ. рдпрд╣ рдорд╣рдБрдЧрд╛ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрднрд╡рддрдГ рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛ред (рдж .h
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╡реИрд╕реЗ рднреА рдбрд┐рд╕реНрдХ рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдХрд░реЗрдВрдЧреЗ
рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдП.)

# рд╢рд╛рдорд┐рд▓ la .рдореЛрд╕реА рдкрдЯреНрдЯрд┐рдХрд╛

рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдЖрдкрдХреЗ рд╡рд┐рдЬреЗрдЯ рдореЗрдВ "moc" рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ "#include" рдХрд░рдирд╛ рд╣реИ
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓. рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ "#include" рд▓рд┐рдЦрдирд╛ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ
рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕рдВрдХрд▓рди рддреЗрдЬреА рд╕реЗ рд╣реЛрддрд╛ рд╣реИред
(рдЕрдзрд┐рдХрд╛рдВрд╢ C++ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ рд╡реНрдпрддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░
рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд▓рдЧрднрдЧ рдЖрдкрдХреЗ рд╡рд┐рдЬреЗрдЯ рдЬрд┐рддрдиреА рдлрд╝рд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
рд╡реИрд╕реЗ рднреАред) рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

//my_widget.h
рдХрдХреНрд╖рд╛ MyWidget : рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ QWidget {
Q_рд╡рд╕реНрддреБ
// ...
}

//my_widget.cpp

#"my_widget.h" рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ
#include "my_widget.moc" // my_widget.moc рдЗрд╕рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ
// рдПрдордУрд╕реА рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ред
// рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЪреАрдЬреЗрдВ рдпрд╣рд╛рдВред
MyWidget::MyWidget(QWidget * рдкреИрд░реЗрдВрдЯ, рд╕реНрдерд┐рд░рд╛рдВрдХ рдЪрд╛рд░ * рдирд╛рдо) :
QWidget(рдЕрднрд┐рднрд╛рд╡рдХ, рдирд╛рдо)
{
// ...
}

рдЕрдм рдЖрдкрдХреЛ рд╕рднреА ".moc" рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдирд┐рдпрдо рд░рдЦрдирд╛ рд╣реЛрдЧрд╛, рдЬреИрд╕реЗ:

рдПрдордУрд╕реА := $(рдХреНрдпреВрдЯреАрдбреАрдЖрдИрдЖрд░)/рдмрд┐рди/рдПрдордУрд╕реА
# .moc рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рдпрдо:
%.рдореЛрдХ: %.рдПрдЪ
$(MOC) $(рдЗрдирдкреБрдЯ) -рдУ $(рдЖрдЙрдЯрдкреБрдЯ)

рдореЗрдХрдкреНрдк рдЗрддрдирд╛ рд╕рдордЭрджрд╛рд░ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдпрд╣ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЙрд╕реЗ "my_widget.moc" рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рдпрд╛ рдпрджрд┐ рдпрд╣ рдкреБрд░рд╛рдирд╛ рд╣реИред

рдпрд╣ рджреВрд╕рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрдХрд▓рди рдХреЛ рдЧрддрд┐ рджреЗрддрд╛ рд╣реИред

рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдПрд╕рдЯреА рдкрджрд╛рд╡рдирдд рдмрдирд╛рдирд╛ рдореБрд╣рд╛рд╡рд░реЛрдВ
рд▓рдХреНрд╖реНрдп рдмрдирд╛рдПрдВ

рдХрднреА-рдХрднреА рд▓реЛрдЧреЛрдВ рдХреЗ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдпрдо рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХрд┐рд╕ рд▓рдХреНрд╖реНрдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ,
рд╡рд┐рд╢реЗрд╖ рдЪрд░ "MAKECMDGOALS" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рдХрднреА-рдХрднреА рдРрд╕реА рдЪреАрдЬреЗрдВ рджреЗрдЦрддрд╛ рд╣реИ
рдЗрд╕:

ifneq ($(рдлрд╝рд┐рд▓реНрдЯрд░ рдЙрддреНрдкрд╛рджрди, $(MAKECMDGOALS)),)
CFLAGS := -O2
рдЕрдиреНрдп
CFLAGS := -рдЬреА
endif

рдпрд╣ рдореЗрдХрдк рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдРрд╕реЗ рдХреЗ рд▓рд┐рдП "MAKECMDGOALS" рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдБ
рдорд╛рдорд▓реЗ (рдФрд░ рдЗрд╕реА рддрд░рд╣ рдЬреАрдПрдирдпреВ рдореИрдиреБрдЕрд▓ рдмрдирд╛рддрд╛ рд╣реИ)ред рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдЕрдкрдирд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рдФрд░ рд▓рдЧрд╛рдПрдВ
рдбрд┐рдмрдЧ-рд╕рдВрдХрд▓рд┐рдд .o рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ, рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрд╕рд░реНрдЧ рджреЗрдирд╛ рдпрд╛
рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпрдп, рдпрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

рд╕рдВрднрд╡рддрдГ рдПрдХрдорд╛рддреНрд░ рд╕рдордп рдЬрдм рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "MAKECMDGOALS" рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ
рдЖрдкрдХреА рдореЗрдХрдлрд╝рд╛рдЗрд▓реНрд╕ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ "рд╕реНрд╡рдЪреНрдЫ" рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
(рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд╕рд╛рдлрд╝ рд▓рдХреНрд╖реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,

ifneq ($(MAKECMDGOALS),рд╕реНрд╡рдЪреНрдЫ)
рд▓реЛрдб_рдореЗрдХрдлрд╛рдЗрд▓ $(рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб **/рдореЗрдХрдкрдлрд╛рдЗрд▓)
рдЕрдиреНрдп
no_implicit_load . # рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд░реЛрдХреЗрдВред
endif

$ (рдлреЛрдиреА рдХреНрд▓реАрди):
&rm -f $(рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб **/*.o)

рдкреБрдирд░рд╛рд╡рд░реНрддреА рдмрдирд╛рдирд╛ рд╕реЗрд╡рд╛ рдореЗрд░реЗ рдирд┐рд░реНрдорд╛рдг in рд╡рд┐рднрд┐рдиреНрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ

makepp_cookbook рдореЗрдВ "рдПрдХрд╛рдзрд┐рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпреБрдХреНрддрд┐рдпрд╛рдБ" рджреЗрдЦреЗрдВред

рдкреБрдирд░рд╛рд╡рд░реНрддреА рдмрдирд╛рдирд╛ рд╕реЗрд╡рд╛ рдореЗрд░реЗ рдкрд░рд┐рд╡рд░реНрддрди рдореВрд▓реНрдп of a рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓

рдХреБрдЫ рдореЗрдХрдлрд╝рд╛рдЗрд▓реЗрдВ рдХрд┐рд╕реА рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рднрд┐рдиреНрди рдорд╛рди рдХреЗ рд╕рд╛рде рд╕реНрд╡рдпрдВ рдХреЛ рдкреБрдирдГ рд╕рдХреНрд░рд┐рдп рдХрд░рддреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбрд┐рдмрдЧ
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдЦрдВрдб рдореЗрдВ рд▓рдХреНрд╖реНрдп

.рдлреЛрдиреА: рд╕рднреА рдбрд┐рдмрдЧ

рдЕрдиреБрдХреВрд▓рд┐рдд:
$(MAKE) рдкреНрд░реЛрдЧреНрд░рд╛рдо CFLAGS=-O2

рдбрд┐рдмрдЧ:
$(MAKE) рдкреНрд░реЛрдЧреНрд░рд╛рдо CFLAGS=-g

рдХрд╛рд░реНрдпрдХреНрд░рдо: рдПрдУ рдмреЛ
$(рд╕реАрд╕реА) $(CFLAGS) $^ -o $@

%.рдУ:%.рд╕реА
$(CC) $(CFLAGS) -c $< -o $@

рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рдбреАрдмрдЧ рдмрдирд╛рдПрдВ" рдЯрд╛рдЗрдк рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдбрд┐рдмрдЧ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореЛрдб рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рддрд╛ рд╣реИ
рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрдЬрд╛рдп.

рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реЗрдЯреЛрдВ рдХреЗ рд╕рд╛рде рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдирд╛ рд╣реИ
рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ, рдЗрд╕ рддрд░рд╣:

CFLAGS := -O2
DEBUG_FLAGS := -рдЬреА
рдореЙрдбреНрдпреВрд▓ := рдПрдмреА

рдкреНрд░реЛрдЧреНрд░рд╛рдо: $(рдореЙрдбреНрдпреВрд▓).o
$(CC) $(CFLAGS) $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

рдбрд┐рдмрдЧ/рдкреНрд░реЛрдЧреНрд░рд╛рдо: рдбрд┐рдмрдЧ/$(рдореЙрдбреНрдпреВрд▓).o
$(CC) $(DEBUG_FLAGS) $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

%.рдУ:%.рд╕реА
$(CC) $(CFLAGS) -c $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

рдбреАрдмрдЧ/%o : %c
$(CC) $(DEBUG_FLAGS) -c $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

$(рдлреЛрдиреА рдбреАрдмрдЧ): рдбреАрдмрдЧ/рдкреНрд░реЛрдЧреНрд░рд╛рдо

рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдлрд╛рдпрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ (рдП) рдЖрдкрдХреЛ рд╣рд░ рдЪреАрдЬ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ
рдбрд┐рдмрдЧ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╡рд╛рдкрд╕ рдЖрдПрдВ; (рдмреА)

рдЙрдкрд░реЛрдХреНрдд рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдЫ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд
рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорддреБрд▓реНрдп рд╣реИ:

рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдбрд┐рдмрдЧ=. # рдбрд┐рдмрдЧ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдПрдХ рдкреНрд░рддрд┐ рдХреА рддрд░рд╣ рдмрдирд╛рддрд╛ рд╣реИ
# рд╡рд░реНрддрдорд╛рди рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛.
рд▓реЛрдб_рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдбрд┐рдмрдЧ CFLAGS=-g
# рдбрд┐рдмрдЧ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдкрд░ CFLAGS рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ
CFLAGS := -O2 # рдЗрд╕ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдкрд░ CFLAGS рдХрд╛ рдорд╛рди

рдХрд╛рд░реНрдпрдХреНрд░рдо: рдПрдУ рдмреЛ
$(рд╕реАрд╕реА) $(CFLAGS) $^ -o $@

%.рдУ:%.рд╕реА
$(CC) $(CFLAGS) -c $< -o $@

$(рдлреЛрдиреА рдбреАрдмрдЧ): рдбреАрдмрдЧ/рдкреНрд░реЛрдЧреНрд░рд╛рдо
# рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рдореЗрдХрдПрдк рдбрд┐рдмрдЧ" рдЯрд╛рдЗрдк рдХрд░рддрд╛ рд╣реИ, рддреЛ рдмрд┐рд▓реНрдб рд╣реЛрддрд╛ рд╣реИ
# рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдмрдЬрд╛рдп рдбрд┐рдмрдЧ/рдкреНрд░реЛрдЧреНрд░рд╛рдо.

рдХрдИ рддрд░рд╣ рдХрд╛ рд╕реБрдЭрд╛рд╡реЛрдВ
рдХреИрд╕реЗ do I рдирд┐рд░реНрдорд╛рдг рдПрдХ рднрд╛рдЧ рдЕрд▓рдЧ рдврдВрдЧ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░?

рдореЗрдХрдкреНрдк рдиреЗ рдРрд╕рд╛ рдХрд░рдирд╛ рдХрдард┐рди рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдгрд╛рдо рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрд╕рдВрдЧрдд рд╣реИред
рд▓реЗрдХрд┐рди рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛
рднрд╛рд░реА рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА. рдЖрдк рдЗрд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░рдХреЗ рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрд▓рдЧ рд╕реЗ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд▓рд┐рдВрдХ рдЪрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдирд╛:

рдореЗрдХрдкреНрдк DEBUG=3 buggy.o # рдЗрд╕реЗ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдмрдирд╛рдПрдВред
makepp --dont-build=buggy.o buggy # "рдЧрд▓рдд" рдмрд┐рд▓реНрдб рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдХреИрд╕реЗ do I рдмрдирд╛рдирд╛ рдирд┐рд╢реНрдЪрд┐рдд my рдЙрддреНрдкрд╛рджрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореМрдЬреВрдж?

рдЖрдк рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓
рдЖрдЙрдЯрдкреБрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЬрд╛рдирд╛ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ
рдЗрд╕:

#рд╢рд╛рд╕реНрддреНрд░реАрдп рддрд░реАрдХрд╛
рдбрдореА := $(рд╢реЗрд▓ рдЯреЗрд╕реНрдЯ -d $(OUTPUT_DIRECTORY) || mkdir -p $(OUTPUT_DIRECTORY))
# рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдиреЗ рд╕реЗ рдЖрд╕рд╛рди рд╣реИ
# $(OUTPUT_DIRECTORY) рдФрд░ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдирд┐рдпрдо рд╣реИред
# рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП = рдХреЗ рдмрдЬрд╛рдп := рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
# рддреБрд░рдВрдд рдЕрдорд▓ рдХрд░реЗрдВ.
# рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг: рдкрд░реНрд▓ рдХреЛрдб, OUTPUT_DIRECTORY рд╕реНрдерд╛рдиреАрдп рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
perl_begin
-d $OUTPUT_DIRECTORY рдпрд╛ mkdir $OUTPUT_DIRECTORY;
perl_end
# рдЖрдзреБрдирд┐рдХ рддрд░реАрдХрд╛, рдореМрдЬреВрджрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛
&mkdir -p $(OUTPUT_DIRECTORY)

рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рдХрдерди рдЖрдкрдХреЗ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдХреЗ рдкрд╛рд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ
рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рд╕реЗ рдкрд╣рд▓реЗ рдЬрд┐рд╕реЗ рд╕рдВрднрд╡рддрдГ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдХреИрд╕реЗ do I рдордЬрдмреВрд░ a рдЖрджреЗрд╢ рд╕реЗрд╡рд╛ рдореЗрд░реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд on рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрдорд╛рдг?

рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд┐рдпрдо рддрдВрддреНрд░ рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдмрд╕ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИ, рдЬреИрд╕реЗ
рдЗрд╕:

рдбрдореА := $(рд╢реЗрд▓ рджрд┐рдирд╛рдВрдХ > Last_build_timestamp)

рдпрд╛ рдЗрд╕реЗ рдкрд░реНрд▓ рдмреНрд▓реЙрдХ рдореЗрдВ рд░рдЦреЗрдВ, рдЗрд╕ рддрд░рд╣:

perl_begin
рд╕рд┐рд╕реНрдЯрдо ("рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢");
perl_end

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд▓рдХреНрд╖реНрдп рд╣реЛрдиреЗ рдкрд░ рднреА рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ.

рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирдХрд▓реА рд▓рдХреНрд╖реНрдп рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рднрд▓реЗ рд╣реА рд╡рд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рд╛рдЗрд▓ рд╣реЛред
рдпрд╣ рдореЗрдХрдк рдХреЛ рд╣рд░ рдмрд╛рд░ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХреЛ рджреЛрдмрд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрднреА
рдХреБрдЫ рдирд┐рдпрдо рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред

рдХреИрд╕реЗ do I рдЫреЛрдЯрд╛ рдХрд░рдирд╛ la рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдирд┐рд░реНрдорд╛рдг рдЖрджреЗрд╢?

рдкреНрд░рд╛рдп: рдЖрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддреЗ рд╣реИрдВ рдХрд┐ рдЙрд╕ рдкрд░ рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ
рд╕реНрдХреНрд░реАрди рдЕрдкрдардиреАрдп рд╣реИ. рдЖрдк рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЛ рджрдмрд╛рдХрд░ рдЬреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЙрд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ
рд╕рдВрдкреВрд░реНрдг рдХрдорд╛рдВрдб, рдФрд░ рдлрд┐рд░ рдХрдорд╛рдВрдб рдХреЗ рджрд┐рд▓рдЪрд╕реНрдк рднрд╛рдЧ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВред рдЗрд╕рдХрд╛
"$(filter_out )" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдорд╛рдВрдб рдХреЗ рдХреЗрд╡рд▓ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рднрд╛рдЧ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ
рдЗрд╕:

ALL_CFLAGS = $(CFLAGS) $(рд╢рд╛рдорд┐рд▓ рд╣реИ) $(ADDL_CXX_FLAGS) $(DEBUG_FLAGS)

%.рдУ:%.рд╕реА
@&echo $(notdir $(CC)) ... \
$(filter_out -I* $(ADDL_CXX_FLAGS), $(ALL_CFLAGS)) \
-рд╕реА $(рдЗрдирдкреБрдЯ)
@$(CC) $(ALL_CFLAGS) -c $(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

(рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рдордиреЗ "@" рдХрдорд╛рдВрдб рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред)

рдпрд╣ рдЖрдкрдХреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдХрд▓реНрдк рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рд▓реЗрдХрд┐рди рд╕рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ (рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрдХреНрд╕рд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реЛрддреЗ рд╣реИрдВ!)ред рдпрджрд┐ рдЖрдк рдЬрд┐рд╕ рднрд╛рдЧ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ
in рдЖрдкрдХреЗ рдЖрджреЗрд╢ рдореЗрдВ рд╕рдиреНрдирд┐рд╣рд┐рдд рд╣реИ, рдЖрдк "рдкреНрд░рд┐рдВрдЯ" рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреЛ рдПрдХ рдЬреЛрдбрд╝рддрд╛ рд╣реИ)ред
рдиреНрдпреВрд▓рд╛рдЗрди, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ):

рдХреЛ рд▓рдХреНрд╖реНрдп:
@...$(рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ рдЫрд╛рдкреЗрдВ)...

рдХреИрд╕реЗ do I рдмрджрд▓рдирд╛ a рдкрдЯреНрдЯрд┐рдХрд╛ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ?

рдХреБрдЫ рдЕрд╕реНрдкрд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдкреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдХреИрдирд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ
рдорд╛рди рд▓реАрдЬрд┐рдпреЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ xml рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ foobar.xml рдЬрд┐рд╕рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ foobar.out:


рдП
рдмреА
рд╕реА


рд╣рдордиреЗ рдЗрд╕ рд╕рд░рд▓ рд▓реЗрдЖрдЙрдЯ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ xml рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рд╛рде
рдмрд┐рд▓реНрдЯрд┐рди рдПрдВрдб рд╕реЗрдб, рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╣рдо рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рддреАрди рд╕рд░рд▓ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ
рд▓рд╛рдЗрдиреЛрдВ:

%d: %xml
&sed 's! !$(stem).out: \\! || рдПрд╕! (.+) !$$1 \\! || рдПрд╕! !# рдЦрд╛рд▓реА!' \
$(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

foobar.d рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ

рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдкрд░, рдкрд╣рд▓реЗ "foobar.d" рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ:

рдлрд╝реЛрдмрд╛рд░.рдЖрдЙрдЯ: \
рдП \
рдмреА \
рд╕реА \
# рдЦрд╛рд▓реА

рдЦрд╛рд▓реА (рд╕рд┐рд░реНрдл рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрд╛рд▓реА) рдкрдВрдХреНрддрд┐ рдкреАрдЫреЗ рд░рд╣рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрд╛рддреА рд╣реИ
рдмреИрдХрд╕реНрд▓реИрд╢ рдорд▓реНрдЯреАрд▓рд╛рдЗрди рд╕реВрдЪреА рддреИрдпрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ:

%d: %xml
&sed 's! !$(stem).out: \$$((! || s! !))! || s!<.+?>!!g' \
$(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

foobar.d рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ

рдпрд╣ рдПрдХ рд╕рдорддреБрд▓реНрдп рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:

рдлрд╝реЛрдмрд╛рд░.рдЖрдЙрдЯ: $((
a
b
c
))

рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреБрдирд░реНрд▓реЗрдЦрди рдХрд░рдирд╛ рд╣реИ, рддреЛ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдХреЗ рднреАрддрд░ рдпрд╛ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
рдореЙрдбреНрдпреВрд▓ рдЬрд┐рд╕реЗ рдЖрдк рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП $_ рдХреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЗрдирдкреБрдЯ рд▓рд╛рдЗрдиреЗрдВ рдЫреВрдЯ рдЬрд╛рдПрдВрдЧреА:

рдЙрдк рдорд╛рдпрдлрд╝рд┐рд▓реНрдЯрд░ {
рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд $_ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВ рдпрджрд┐ /
рдореЗрд░рд╛ $stem = f_stem;
рдПрд╕! !$stem.out: \$((! || s! !))! || s!<.+?>!!g;
}

%d: %xml
&sed 's! !$(stem).out: \$$((! || s! !))! || s!<.+?>!!g' \
$(рдЗрдирдкреБрдЯ) -o $(рдЖрдЙрдЯрдкреБрдЯ)

foobar.d рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ

onworks.net рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдирд▓рд╛рдЗрди makepp_cookbook рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рдлреНрд░реА рд╕рд░реНрд╡рд░ рдФрд░ рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди

рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд╛рдЗрдиреЗрдХреНрд╕ рдПрдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

рд▓рд┐рдирдХреНрд╕ рдХрдорд╛рдВрдб

Ad