Ninja: рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреИрд╕реЗ рдЙрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рдЕрдЧре░ 2015  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ninja-build/ninja

рдкрд░ рдЪрд░реНрдЪрд╛ рджреЗрдЦреЗрдВ
https://groups.google.com/d/topic/ninja-build/ZGZ2Ewxsxaw/discussion
рдФрд░ рдкрд┐рдЫрд▓рд╛ рдзрд╛рдЧрд╛ рд╡рд╣рд╛рдВ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреНрдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкреАрдЖрд░ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА рдЬреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ? рдпрд╣ https://github.com/mesonbuild/meson/ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдПрдХ рдкрд░реЗрд╢рд╛рдиреА рднрд░рд╛ рдЕрд╡рд░реЛрдзрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рд░реИрдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдлреА рдХреБрдЫ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЗрдВ рднреА рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдирд┐рдВрдЬрд╛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдиреЗ рдореЗрдВ рдЕрд▓рдЧ рд╣реИред :)

рд╣рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЧрд░ рдирд┐рдиреНрдЬрд╛ рдореЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд░рдЦрдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд╣реИред

рд╕рднреА 10 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЙрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝рдирд╛, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдВрдЬрд╛ рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ CreateProcess lpCommandLine рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП PATH рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ lpApplicationName ? рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐, execvpe рдФрд░ execle рдкрд░ рд╕рдорд╛рди рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣рд╛рдВ рдЕрд╡рд░реЛрдзрдХ рдХреНрдпрд╛ рд╣реИред рдЪреАрдпрд░реНрд╕!

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд╕рди рдореЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ: https://github.com/mesonbuild/meson/issues/266 , https://github.com/mesonbuild/meson/issues/384 , рдЖрджрд┐ред

рдХреНрдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкреАрдЖрд░ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА рдЬреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ? рдпрд╣ https://github.com/mesonbuild/meson/ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдПрдХ рдкрд░реЗрд╢рд╛рдиреА рднрд░рд╛ рдЕрд╡рд░реЛрдзрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рд░реИрдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдлреА рдХреБрдЫ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЗрдВ рднреА рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдирд┐рдВрдЬрд╛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдиреЗ рдореЗрдВ рдЕрд▓рдЧ рд╣реИред :)

рд╣рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЧрд░ рдирд┐рдиреНрдЬрд╛ рдореЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд░рдЦрдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд╣реИред

POSIXy рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

rule foo
  command = ENV1=env1 ENV2=env2 my_command

рдпрд╛

rule foo
  command = $env my_command
foo out: in
  env = ENV1=env1 ENV2=env2

рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдирд╣реАрдВ рд╣реИ? рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрджреЗрд╢реЛрдВ рдХреЛ env vars рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдХрдо рд╕рд╛рдорд╛рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╕реЗ рдирд┐рдВрдЬрд╛ рд╕рд░рд▓ рд░рд╣рддрд╛ рд╣реИред

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

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдпрд╣ рднреА рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ env vars рд╕реЗрдЯ рдХрд░рдирд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рд╣реИ рдФрд░ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╣рд╛, рддреЛ рдЗрд╕реЗ рдкреАрдЫреЗ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧрдиреЛрдо рдореЗрдВ gobject-introspection рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ CC / CXX /etc рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрдмрдХрд┐ рдЗрд╕рдХреЗ рдЯреВрд▓реНрд╕ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рдПрдХ рдСрдЯреЛ-рдбрд┐рдЯреЗрдХреНрд╢рди рдореИрдХреЗрдирд┐рдЬреНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЧрд▓рдд рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдореЗрд╕рди рдореЗрдВ "рдХрд╕реНрдЯрдо рд▓рдХреНрд╖реНрдп" рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЖрджреЗрд╢ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд▓реЛрдЧ рдЕрдХреНрд╕рд░ рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреБрдЫ рдРрд╕реЗ рдЙрдкрдХрд░рдг рдЪрд▓рд╛рддреЗ рд╕рдордп рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╡реЗ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред

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

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЧреЛрдмрдЬреЗрдХреНрдЯ-рдЖрддреНрдордирд┐рд░реАрдХреНрд╖рдг рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдирдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХреЗ? (рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ, рдЭрдВрдбреЗ рдХреЗ рдмрдЬрд╛рдп env vars рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджреЗрд╡рддрд╛ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп env, рдЖрджрд┐ рдХреЛ рдЦрд░рд╛рдм рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджреЗрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ)

рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ cl.exe рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдПрдирд╡реА рд╡рд░реНрд░реНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ; рдЙрд╕рдХреЗ рд▓рд┐рдП рдирд┐рдВрдЬрд╛ рдХреЗ рдкрд╛рд╕ ninja -t msvc рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ -e рдзреНрд╡рдЬ рд╣реИ рдЬреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдореЗрд╕рди рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдФрд░ рдкреЙрдЬрд╝рд┐рдХреНрд╕ рд╕рд╛рдорд╛рди рдХрд╣реАрдВ рдФрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рд╣реИред рдореИрдВ рдЦрд┐рдбрд╝рдХреА рдкрд░ рдПрдХ FIPS рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдЗрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

https://www.openssl.org/docs/fips/UserGuide-2.0.pdf , рдЦрдВрдб 5.3.2:

For the Windows┬о
 environment a perl script fipslink.pl is provided which performs a
function similar to fipsld for Unix┬о
/Linux┬о
. Several environment variables need to be set:
FIPS_LINK is the linker name, normally тАЬlinkтАЭ
FIPS_CC is the C compiler name, normally тАЬclтАЭ
FIPS_CC_ARGS is a string of C compiler arguments for compiling fips_premain.c
PREMAIN_DSO_EXE should be set to the path to fips_premain_dso.exe if a DLL is
being linked (can be omitted otherwise)
PREMAIN_SHA1_EXE is the full path to fips_standalone_sha1.exe
FIPS_TARGET is the path of the target executable or DLL file

рднрд▓реЗ рд╣реА FIPS_CC рдХреЛ рдореЗрд░реЗ рдкрд░рд┐рд╡реЗрд╢ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдиреНрдЬрд╛ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░реЛрд╕реЗрд╕ ( perl fipslink.pl ... ) рдореЗрдВ env рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ -рдИ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ LD_LIBRARY_PATH рд╕реЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд╕рд╛рде рдЕрдХреНрд╕рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХрд╕реНрдЯрдо рдЙрдкрд╕рд░реНрдЧ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ( -Wl,-rpath рдбрд┐рд╕реНрдЯреНрд░реЛ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп DT_RUNPATH рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ DT_RPATH рдЬреИрд╕реЗ рдбреЗрдмрд┐рдпрди рдФрд░ рдЙрдмрдВрдЯреВ)ред Autotools (libtool) рдЗрд╕рдХреЗ рд▓рд┐рдП рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдордВрджреА рд╣реЛрдЧреА рдпрджрд┐ рд╣рдореЗрдВ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рдпрдерди рджреБрднрд╛рд╖рд┐рдпрд╛ рдпрд╛ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

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

рдореБрдЭреЗ рд╕рдЪ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдмрдЧ рдЕрдм рдХреНрдпрд╛ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдерд╛ред :)

LD_LIBRARY_PATH рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдирд┐рдХреЛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рджреВрд╕рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ; рд╣рдореЗрдВ рд╡реИрд╕реЗ рднреА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред (рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╕рдмрдкреНрд░реЛрд╕реЗрд╕ рд╡реИрд╕реЗ рднреА рдмрд╣реБрдд рд╕рд╕реНрддреЗ рд╣реИрдВ; рдЖрдк /bin/sh -c "echo hello" рдХреЛ рднреА рдорд╛рдк рдирд╣реАрдВ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИред)

рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ ninja -t msvc рд╣реИред рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рдореЗрд╕рди рд╡рд┐рд╢реЗрд╖рддрд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЬрдм рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдХреБрдЫ рдЕрдиреБрднрд╡ рд╣реЛ рдЬрд╛рдП рддреЛ рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░реЗрдВред

Kconfiglib рдХреЛ рдЖрдЙрдЯ рдСрдл рд╕реЛрд░реНрд╕ рдмрд┐рд▓реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдард┐рди $srctree рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдЕрдиреНрдп рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
https://github.com/ulfalizer/Kconfiglib/blob/424d0d38e7/kconfiglib.py#L108

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

рд╕реЗ: https://github.com/ulfalizer/Kconfiglib/tree/424d0d38e7be15c5#overview

рд╕рдВрдкреВрд░реНрдг рдкреБрд╕реНрддрдХрд╛рд▓рдп kconfiglib.py рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реИред рдмрдВрдбрд▓ рдХреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕рдХреЗ рдКрдкрд░ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Qix- picture Qix-  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Psirus picture Psirus  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

randomascii picture randomascii  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nico picture nico  ┬╖  20рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Alexander-- picture Alexander--  ┬╖  20рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ