C / C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо GYP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдкрд░рд┐рдЪрдп


рдПрдХ рд╣рд╛рдЗрдмреНрд░рд┐рдб рдкрд░ рдХрдИ рдмрд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╕реАрдПрдордХреЗ рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ ред рдкреНрд░рдгрд╛рд▓реА рдХрд╛рдлреА рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИред рд╣рд░ рдХреЛрдИ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдЗрд╕ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрджреНрднреБрдд) рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рд╣рд╛рдВ, рд▓реЗрдЦ рдЬрдирд░реЗрдЯ рдпреЛрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ (GYP) рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реЛрдЧрд╛ред

рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕


GYP рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ - Chrome / Chromium рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдЖрдкрдХреЗ рдЙрдкрдХрд░рдг рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрдгрдп рд╕реЗ рдмрд╣реБрдд рд╡рд┐рд╡рд╛рдж рд╣реБрдЖ, рдмрд╣реБрддреЛрдВ рдХреЛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ (рд╢рд╛рдпрдж рдЕрднреА рднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИ) рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ "рд╕рд╛рдЗрдХрд┐рд▓" рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХреНрдпреЛрдВ рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, GYP рдПрдХ рдХрд╛рдлреА рд▓реЛрдХрдкреНрд░рд┐рдп рдЙрдкрдХрд░рдг рдмрди рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЕрдм рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд░реЛрдорд┐рдпрдо рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, V8 рдФрд░ рджреЗрд╢реА рдиреЛрдбреНрд╕ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╕реАрдПрдордХреЗ рд╕реЗ рд╕рдорд╛рдирддрд╛рдПрдВ рдФрд░ рдЕрдВрддрд░


GYP рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдиреЗ CMake рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рд╣реА рд▓рдХреНрд╖реНрдп рдХрд╛ рдкреАрдЫрд╛ рдХрд┐рдпрд╛: рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рдЖрдкрдХреЛ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛ рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред GYP рд╡рд░реНрддрдорд╛рди рдореЗрдВ GNU рдореЗрдХ , SCons , рдирд┐рдВрдЬрд╛ , рдПрдХреНрд▓рд┐рдкреНрд╕ (CDT), рд╡рд┐рдЬреБрдЕрд▓рд╕реНрдЯрдбрд┐рдпреЛ рдФрд░ Xcode рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

GYP рдФрд░ CMake рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ (рдореЗрд░реА рд░рд╛рдп рдореЗрдВ):


GYP рдФрд░ CMake рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд▓реЛрдЧ рдкрд╣рд▓реА рдмрд╛рд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд┐рдХреА рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкреГрд╖реНрда рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╣рд╛рдБ рдЖрдк рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдПрдХ рдЧрд░реНрдо рдЭрдбрд╝рдк рдХреЗ рд╕рд╛рде рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реНрдерд╛рдкрдирд╛


рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рдкрд╛рдпрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЕрдзрд┐рдорд╛рдирддрдГ рд╕рдВрд╕реНрдХрд░рдг 2.6 рдпрд╛ рдЙрдЪреНрдЪрддрд░ред рд▓рд┐рдирдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рд╡рд┐рдВрдбреЛрдЬ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ActivePython рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд╛рдпрдерди рд╕рд╛рдЗрдЯ рд╕реЗ рд╡рд┐рддрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ GYP рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ sudo python setup.py install рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдПрдВред рдпрджрд┐ рдЖрдк рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ GYP рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХреЗрд╡рд▓ GYP рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ PATH рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЛрдХрдкреНрд░рд┐рдп рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдореЗрдВ рдЕрдХреНрд╕рд░ рдорд╛рдирдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ gyp рдкреИрдХреЗрдЬ рд╣реЛрддрд╛ рд╣реИ (рд╕рдВрднрд╡рддрдГ рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ)ред

рдореБрдЭреЗ V8 рд▓реЗрдЦрдХреЛрдВ рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рднреА рдкрд╕рдВрдж рд╣реИ рдЬреЛ build рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ GYP рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

Emacs рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, GYP рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдореЗрд░реА рдорд╢реАрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЖрдЧреЗ рдХрд╛ рд╡рд░реНрдгрди рдПрдХ рд▓рд┐рдирдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╣реЛрдЧрд╛ рдЬреЛ рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рд╣рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдЖрддреНрдо рдирд┐рд╣рд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреА рддрд░рд╣


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

рдиреАрдЪреЗ рдХреНрд░реЛрдорд┐рдпрдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкрд╛рдП рдЧрдП рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рдФрд░ рдЫреЛрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ ред
 { 'targets': [ # <-   #   { 'target_name': 'gtest', # <-   'cflags': ['-pthread'], # <-   'link_settings': { # <-   'libraries': ['-lpthread'] # <-    }, 'type': 'static_library', # <-  ,   static_library, # shared_library, executable, none 'standalone_static_library': 1, # <-     thin archive #        GYP 'sources': [ # <-    'include/gtest/gtest-death-test.h', 'include/gtest/gtest-message.h', 'include/gtest/gtest-param-test.h', 'include/gtest/gtest-printers.h', 'include/gtest/gtest-spi.h', 'include/gtest/gtest-test-part.h', 'include/gtest/gtest-typed-test.h', 'include/gtest/gtest.h', 'include/gtest/gtest_pred_impl.h', 'include/gtest/internal/gtest-death-test-internal.h', 'include/gtest/internal/gtest-filepath.h', 'include/gtest/internal/gtest-internal.h', 'include/gtest/internal/gtest-linked_ptr.h', 'include/gtest/internal/gtest-param-util-generated.h', 'include/gtest/internal/gtest-param-util.h', 'include/gtest/internal/gtest-port.h', 'include/gtest/internal/gtest-string.h', 'include/gtest/internal/gtest-tuple.h', 'include/gtest/internal/gtest-type-util.h', 'src/gtest-all.cc', 'src/gtest-death-test.cc', 'src/gtest-filepath.cc', 'src/gtest-internal-inl.h', 'src/gtest-port.cc', 'src/gtest-printers.cc', 'src/gtest-test-part.cc', 'src/gtest-typed-test.cc', 'src/gtest.cc', ], 'sources!': [ # <-     , 'src/gtest-all.cc', #      ], #  conditions 'include_dirs': [ # <-      '.', './include', ], 'conditions': [ # <-   ,   ['OS == "linux"', { #     'defines': [ 'GTEST_HAS_RTTI=0', ], 'direct_dependent_settings': { 'defines': [ 'GTEST_HAS_RTTI=0', ], }, }], ['OS=="win" and (MSVS_VERSION=="2012" or MSVS_VERSION=="2012e")', { 'defines': [ '_VARIADIC_MAX=10', ], 'direct_dependent_settings': { 'defines': [ '_VARIADIC_MAX=10', ], }, }], ], 'direct_dependent_settings': { # <- ,     , #   gtest , . .   'defines': [ # <-   'UNIT_TEST', ], 'include_dirs': [ # <-     include  'include', #     , ], #     ,  #  </path/to/this/gypfile>/include 'msvs_disabled_warnings': [4800], }, }, #   { 'target_name': 'gtest_main', 'type': 'static_library', 'standalone_static_library': 1, 'dependencies': ['gtest'], # <-   ,    #      'sources': [ 'src/gtest_main.cc', ], }, ], } 

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрдИ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдкрд╛рд░рджрд░реНрд╢реА рд╣реЛрдЧрд╛ (рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде)ред

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

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

рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
 gyp --depth=. gtest.gyp #  Makefile make #  make 

Gtest.gyp рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрдХрдлрд╛рдЗрд▓ рдЕрдЧрд▓реА рдмрд╛рд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП make рдмрд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдмрд╛рд╣рд░ / BUILDTYPE рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрд╛рд╣рд░ / рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ ред

рдиреЛрдЯ : рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдЬрдирд░реЗрдЯрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдордПрд╕рд╡реА, рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдмрдирд╛рддреЗ рд╣реИрдВ, рдореИрдХ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдХреЛрдб) рдФрд░ рдЬреАрд╡рд╛рдИрдкреА рдЬрдирд░реЗрдЯрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╛рдж рд╡рд╛рд▓рд╛ рдкреВрд░реНрд╡рд╡рд░реНрддреАред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрдирд░реЗрдЯрд░ (рдпрд╛ рдПрдХ рд╕рд╛рде рдХрдИ) рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрди рдХреЗ рд╕рдорд╛рди рдПрдХ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 GYP_GENERATORS=make,scons,eclipse gyp --depth=. gtest.gyp 


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд scons рдФрд░ msvs рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рднреА рдЖрдкрдХреЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдХ рдХреЗ рд▓рд┐рдП рдЬрдирд░реЗрдЯрд░ рдХреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рдЪрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди

GYP рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ: "рдкреНрд░рд╛рд░рдВрднрд┐рдХ" рдЪрд░рдг рдореЗрдВ, рд╢рд░реНрддреЛрдВ рдХреЗ рдЕрдВрджрд░ conditions рдФрд░ рдХреНрд╡рд╛рдВрдЯрд┐рдлрд╛рдпрд░ рдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рдЪрд░ < ; "рд▓реЗрдЯ" рдПрдХ рдкрд░, target_conditions рдЕрдиреБрднрд╛рдЧ рдХреА рд╢рд░реНрддреЛрдВ рдХреА рдЧрдгрдирд╛ рдФрд░ рдХреНрд╡рд╛рдВрдЯрд┐рдлрд╛рдпрд░ рдХреЗ рд╕рд╛рде рдЪрд░ > , рд╕рд╛рде рд╣реА рд╕рд╛рде рдмрд╛рд╣рд░реА рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдиред

рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, "рдкреНрд░рд╛рд░рдВрднрд┐рдХ" рдЪрд░рдг рдХреЗ рдЪрд░ рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред

рд╢реБрд░реБрдЖрддреА рдФрд░ рджреЗрд░ рдХреЗ рдЪрд░рдг рдХреЗ рдЪрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдкрд╣рд▓реЗ рд╡рд░реНрдг рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ: <(var) - рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг (рддреАрд░ рдмрд╛рдИрдВ рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЧрдгрдирд╛ рдкрд╣рд▓реЗ рд╕рдордп рдкреИрдорд╛рдиреЗ рдкрд░ рд╣реЛрддреА рд╣реИ), >(var) - рджреЗрд░ рдЪрд░рдг (рддреАрд░ рджрд╛рдИрдВ рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ)ред

рдЪрд░ рдорд╛рдиреЛрдВ рдХреА рдЧрдгрдирд╛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:


рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 { 'variables': { 'component_type': 'shared_library', 'public_api_headers': [ 'include/mylib.h', 'include/mylib_extra.h', ], 'private_headers': [ 'internals.h', ], }, 'targets': [ { 'target_name': 'mylib', 'type': '<(component_type)', # <-   'include_dirs': ['include'], 'sources': [ '<@(public_api_headers)', # <-  public_api_headers '<@(private_headers)', #  private_headers   'src/impl.cc', #   sources ], }, ], } 

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

рдХрднреА-рдХрднреА рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдмрд╛рд╣рд░реА рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рдорд╛рди рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди <!(cmd) рдФрд░ <!@(cmd) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 'variables' : [ 'foo': '<!(echo Build Date <!(date))', ], 

рдЪрд░ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдЕрдиреНрдпрдерд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдмрд╣реБрдд рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реИ:
 { 'variables': { 'component_type%': 'shared_library', # <-  %     #     } #... } 

рдмрд╛рд╣рд░реА рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИред make рдХреЗ make рдЖрдк $ рд╕рд╛рдЗрди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, $(INCLUDES) ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрдо рдкреЛрд░реНрдЯреЗрдмрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рд╕реНрдерд┐рддрд┐

conditions рдЕрдиреБрднрд╛рдЧ рдЖрдкрдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд╣реНрдп рдХрд╛рд░рдХреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рдХреНрд╖реНрдп рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдпрд╛ рдЕрд╕реЗрдВрдмрд▓реА (рд╕реНрдЯреИрдЯрд┐рдХрд▓реА рдпрд╛ рдбрд╛рдпрдиреЗрдорд┐рдХрд▓реА рд▓рд┐рдВрдХреНрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА) рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реБрдП, рдЖрдкрдХреЛ рд╕рдВрдХрд▓рди рдХреЛрдб рдмрджрд▓рдиреЗ рдпрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ / рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрджрд┐ рдЦрдВрдб рдХреА рд╢рд░реНрдд рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЗрд╕рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдЙрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╛ рдпрджрд┐ target_conditions рдЦрдВрдб рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ рд╣реИ рддреЛ рд╕рднреА рд▓рдХреНрд╖реНрдпреЛрдВ рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде)ред

рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг:

 { 'target_name': 'mylib', 'type': 'static_library', # ... 'conditions': [ ['OS=="linux"', { 'sources': ['linux_extra.cc'], # <-    'defines': ['UNIX=1'], # <-   UNIX   1 }], ], } 

рд╢рд░реНрддреЛрдВ рдХреЛ __builtin__ рдбрд┐рдХреНрд╢рдирд░реА рдХреЗ рд╕рд╛рде eval() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдпрдерди рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП, рд╡реЗ рдмреВрд▓рд┐рдпрди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЧрдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдИ рд╢рд░реНрддреЛрдВ рдХреЛ рдФрд░ or рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рдХреА рдкрд░ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЪрд░ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ

рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ GYP рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред #include рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рдорд╛рди рдлрд╝рд╛рдЗрд▓ рд╕рдорд╛рд╡реЗрд╢ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред GYP рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рддрдВрддреНрд░ рдХреЛ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 { 'includes': ['common.gypi', 'other.gypi'], # ... } 

рд╢рд╛рдорд┐рд▓ GYP рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ gypi рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЪрд░, рдирд┐рд░реНрдорд╛рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реЗрдВ рдЖрджрд┐ рдХреА рдШреЛрд╖рдгрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред рдЗрди рд╕рднреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ GYP рдлрд╝рд╛рдЗрд▓ рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЬрд┐рдкреНрд╕реА рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧреАред рд╢рд╛рдорд┐рд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде, рд╢рд╛рдорд┐рд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрд░рд┐рдХрд▓рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдбреАрдмрдЧ рдФрд░ рд░рд┐рд▓реАрдЬрд╝ : рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рдПрдБ

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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ gtest.gyp рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ :
 { 'target_defaults': { 'configurations': { 'Release': { 'conditions': [ ['OS=="linux"', { 'cflags': ['-O2'], #   }], ], }, 'Debug': { 'conditions': [ ['OS=="linux"', { 'cflags': ['-g', '-O0'], #  ,  }], #    ], }, }, }, 'targets': [ # ... ], } 

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

make рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ make , рдмрд╕ BUILDTYPE рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдорд╛рдВрдб рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП V (рдХреНрд░рд┐рдпрд╛) рдзреНрд╡рдЬ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ:
 make BUILDTYPE=Release V=1 

рдмреЗрд╢рдХ, рдЖрдк рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рд╣рдо рдХрдИ рдореЙрдбреНрдпреВрд▓ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ


рд╕реНрд╡рддрдВрддреНрд░ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдореБрдЦреНрдп рдЧреБрдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рдПрдХ рдЕрдЪреНрдЫреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ GYP рдЙрддреНрдХреГрд╖реНрдЯ рд╣реИред

рджреВрд╕рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдлрд╝рдВрдХреНрд╢рди рдЪреБрдиреЗ рдХрд┐ рдХреНрдпрд╛ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реБрдВрджрд░ рдХреЛрдб рдмреБрдХ рдХреЗ рдкрд╣рд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рд░рд▓реАрдХреГрдд рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ (ISBN-10: 0596510047) (рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдХрд╛ рдПрдХ рдСрдирд▓рд╛рдЗрди рд╕рдВрд╕реНрдХрд░рдг рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ)ред

рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд╛рд▓рд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА GitHub рдкрд░ рд╕реНрдерд┐рдд рд╣реИ ред

examples рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рджреЛ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рд╣реИрдВ: gtest-1.6 (рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдЗрдХрд╛рдИ) рдФрд░ mini-regex - рд╣рдорд╛рд░реА рдорд╛рдЗрдХреНрд░реЛ-рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬрд┐рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ libminiregex.a рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ GYP рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬреЛ gtest рдШрдЯрдХ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ:
 { 'includes': ['../conf.gypi'], # <-   'targets': [ { 'target_name': 'miniregex', 'type': 'static_library', 'include_dirs': ['include'], 'sources': [ 'include/miniregex.hpp', # <-  'src/miniregex.cpp', # <-  ], 'direct_dependent_settings': { 'include_dirs': ['include'], }, }, { 'target_name': 'miniregex_test', 'type': 'executable', # <-   'dependencies': [ '../gtest-1.6/gtest.gyp:gtest', # <-      '../gtest-1.6/gtest.gyp:gtest_main', #   libminiregex,   'miniregex', ], 'sources': [ 'src/test/test_miniregex.cpp', # <-    ], }, ], } 

рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЕрдиреНрдп GYP рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдШреЛрд╖рд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдпреЛрдЧреНрдп рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ GYP рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдФрд░ рд▓рдХреНрд╖реНрдп рдирд╛рдо (рдпрд╛ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рднреА рд▓рдХреНрд╖реНрдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛) рдХреЛ рдПрдХ рдХреЛрд▓рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

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

рдкреНрд░рджрд░реНрд╢рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рджреЛрдиреЛрдВ рдореЙрдбреНрдпреВрд▓ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп conf.gypi рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред рдЗрд╕рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЙрд╕реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рдлрд┐рд░ рднреА, рдореБрдЭреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╕реНрд╡рддрдВрддреНрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ (рд╣рдорд╛рд░реЗ рджреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рд▓рдЧрддреЗ рд╣реИрдВ), рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХ рддрдВрддреНрд░ (рдЬреИрд╕реЗ svn:externals рдпрд╛ git submodule ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

mini-regex рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ examples рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдФрд░ рдкрд░рд┐рдЪрд┐рдд рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 gyp --depth=. mini-regex/miniregex.gyp make 

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, gtest рдореЙрдбреНрдпреВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдлрд┐рд░ libminiregex.a рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдлрд┐рд░ libminiregex.a рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓, рдЬреЛ рдмрд╛рд╣рд░ / рдбрд┐рдмрдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдХрд▓рд┐рдд рдХреА рдЬрд╛рдПрдЧреАред рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдЖрдк рдЗрд╕ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрдВрд╕реЛрд▓ рдкрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣рд░рд╛-рднрд░рд╛ GTest рдЖрдЙрдЯрдкреБрдЯ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдм рддрдХ рд╣рдордиреЗ рдХреЗрд╡рд▓ рджреЛ рдореЙрдбреНрдпреВрд▓ рдХрдиреЗрдХреНрдЯ рдХрд┐рдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рдкрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдореЛрдВ рдХреА рд░рдЪрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреА рдкреНрд░рддреНрдпреЗрдХ GYP рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрд╕реЗрдВрдмрд▓реА рд╡рд┐рд╡рд░рдг рдХреЛ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рджреВрд╕рд░реЛрдВ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЗрд╕ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдХреНрд░реЛрдорд┐рдпрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИред

рдХрд╛рд░реНрдп рдФрд░ рдирд┐рдпрдо


рдЕрдХреНрд╕рд░, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рджреМрд░рд╛рди, рдЖрдкрдХреЛ рдХреБрдЫ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпрд╛ рдЧреИрд░-рдорд╛рдирдХ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдХреНрд░рд┐рдпрд╛рдПрдБ рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдмрд╛рд░ рдХреА actions рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, rules рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реА рддрд░рд╣ рдпрд╣ рдЬреАрдПрдирдпреВ рдмрдирд╛рдиреЗ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдпрдореЛрдВ рдХреЛ рдПрдХреНрд╢рди рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд╕реЛрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЬреАрдЯреАрдПрд╕реНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд░реВрдк рдореЗрдВ:
 { 'target_name': 'install', 'type': 'none', 'dependencies': ['gtest', 'gtest_main'], # <-    #   'actions': [ { 'inputs': [], 'outputs': ['$(LIBRARIES)/libgtest.a', '$(LIBRARIES)/libgtest_main.a'], 'action_name': 'copy_libs', 'action': ['cp', '<(PRODUCT_DIR)/libgtest.a', '<(PRODUCT_DIR)/libgtest_main.a', '$(LIBRARIES)'], 'message': 'Copying libraries', }, { 'inputs': [], 'outputs': ['$(INCLUDES)/gtest', '$(INCLUDES)/gtest/internal'], 'action_name': 'copy_headers', 'action': ['cp', '-R', 'include/gtest', '$(INCLUDES)'], 'message': 'Copying header files', } ], } 

рдмрд╛рд╣рд░реА рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ make рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдпрд╛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ LIBRARIES рдФрд░ LIBRARIES рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗ:
 gyp --depth=. gtest.gyp #        sudo make install INCLUDES=/usr/include LIBRARIES=/lib64 

рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рдореИрдВ RPM рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рдПрдХ рдирд┐рдпрдо рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг rst2html рдирд┐рдпрдо рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ RST рдкреНрд░рд╛рд░реВрдк рд╕реЗ HTML рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ:
 { 'target_name': 'docs', 'type': 'none', 'sources': [ 'doc/Build.rst', 'doc/Dictionary.rst', 'doc/README.rst', ], 'rules': [{ 'rule_name': 'rst2html', 'extension': 'rst', 'inputs': ['doc/css/code.css'], 'action': ['rst2html.py', '--stylesheet-path=doc/css/code.css', '--embed-stylesheet', '<(RULE_INPUT_PATH)', '<(PRODUCT_DIR)/Doc/<(RULE_INPUT_ROOT).html'], 'outputs': ['<(PRODUCT_DIR)/Doc/<(RULE_INPUT_ROOT).html'], 'message': 'Compiling RST document <(RULE_INPUT_PATH)' \ 'to HTML <(PRODUCT_DIR)/Doc/<(RULE_INPUT_ROOT).html', }], }, 

extension рд╕рдВрдкрддреНрддрд┐ рдирд┐рдпрдо рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреА рд╣реИ, рдФрд░ inputs рд╕реВрдЪреА рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрднрд░рддрд╛ рд╣реИрдВ (рдпрд╛рдиреА, рдпрджрд┐ рд╡реЗ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдпрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред рдЪрд░ RULE_INPUT_PATH рдЗрдирдкреБрдЯ рдПрдХреНрд╢рди рдлрд╝рд╛рдЗрд▓ RULE_INPUT_ROOT рдХреЗ рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИ - рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрде рдХреЗ рдЖрдзрд╛рд░ рдкрд░ (рдпрд╛рдиреА рдмрд┐рдирд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ)ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╛рдХреА рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдирдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЙрдореНрдкреИрдХреНрдЯрдиреЗрд╕ рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд▓рдХреНрд╖реНрдп рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд make рдХреЛрдб рдХреЗ рд╕рд╛рде рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдмреЗрд╢рдХ, рдпрд╣ рд╡рд╣ рдХреЛрдб рдирд╣реАрдВ рд╣реИ рдЬреЛ GYP рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ):
 BUILDTYPE ?= Debug PRODUCT_DIR ?= out/$(BUILDTYPE) HTML_OUT := $(PRODUCT_DIR)/Doc RST_DOCS := doc/Build.rst doc/Dictionary.rst doc/README.rst HTML_DOCS := $(patsubst doc/%.rst,$(HTML_OUT)/%.html,$(RST_DOCS)) .PHONY: docs docs: $(HTML_DOCS) # ,   $(HTML_OUT)/%.html: doc/%.rst doc/css/code.css mkdir -p $(HTML_OUT) rst2html.py --stylesheet-path=../doc/css/code.css \ --embed-stylesheet $< $@ 

рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ GYP рдирд┐рдпрдореЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ make рд╕рд┐рдВрдЯреИрдХреНрд╕ make рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдЕрдзрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж GNU make рдореЗрдВ рдЕрдиреБрднрд╡реА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реИред

рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдорддреМрд░ рдкрд░ рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯред

рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЪрд░реЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╡рд┐рд╡рд░рдг рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд┐рдХрд┐ ( рдХрд╛рд░реНрдп , рдирд┐рдпрдо ) рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдЙрдЯ рд╕реЛрд░реНрд╕ рд╕реЛрд░реНрд╕ рдХреА


рдЬрд┐рди рдкрд╛рдардХреЛрдВ рдиреЗ рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд GYP рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╡рд╛рдВрдЫрд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдмрд╛рд╣рд░ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рддрд╣ рдХрд┐рдП рдЧрдП, GYP рдХрдИ рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рдмрдирд╛рддрд╛ рд╣реИ (рдкреНрд░рддреНрдпреЗрдХ рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдпрд╛ рджреЛ + рдПрдХ рдореБрдЦреНрдп рдореЗрдХрдлрд╛рдЗрд▓) рдЬреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ рдХреЛрдбред рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдпреЗ рдордзреНрдпрд╡рд░реНрддреА рдлрд╛рдЗрд▓реЗрдВ рдмрд╛рд╣рд░ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рднреА рдмрдирд╛рдИ рдЬрд╛рдПрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг V8 рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ --generator-output рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рд╡рд┐рдХрд▓реНрдк рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд░рди make рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
 gyp --depth=. --generator-output=./out gtest.gyp make -C out 

рдирд┐рд╖реНрдХрд░реНрд╖


GYP рдЕрдкрдиреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд╛рде CMake рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдХрд▓реНрдк рд╣реИредрдореИрдВрдиреЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджреЛрдиреЛрдВ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ GYP рдореБрдЭреЗ рдПрдХ рд╕рд░рд▓, рдЕрдзрд┐рдХ рд╕рд╣рдЬ рдФрд░ рдореЙрдбреНрдпреВрд▓рд░ рдЙрдкрдХрд░рдг рд▓рдЧ рд░рд╣рд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдпреЛрдЧреА рдХреА рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред

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

рд╕рд╛рдзрди


Source: https://habr.com/ru/post/In171697/


All Articles