Ninja: рдкреНрд░рдХрдЯ рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХреЗ рд╕рд╛рде рдбреАрдкрд╛рдЗрд▓ рдирд┐рд░рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХреЛ рдорд┐рд▓рд╛рдирд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 24 рдлрд╝рд░ре░ 2017  ┬╖  70рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ninja-build/ninja

рдирд┐рдВрдЬрд╛ рдореИрдиреБрдЕрд▓ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд┐рд╢реНрд░рдг рдХреЗ рдЦрд┐рд▓рд╛рдл рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЧрдВрднреАрд░ рд╕реАрдорд╛ рдмрди рдЧрдпрд╛ рд╣реИред

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

рдпрд╣рд╛рдБ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ: ninja-bug.bash.txt

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

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕рдорд╛рдзрд╛рди "рдЕрдиреНрдп рд╕рднреА рдЯреВрд▓рд┐рдВрдЧ рдореЗрдВ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдирд╛" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

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

рд╕реАрд╕реА: @nico @chaoren

рд╕реАрдПрдордХреЗ рдореЗрдВ, рдЕрдВрдХ 16675 , рдЕрдВрдХ 13894 рдФрд░ рдПрдордЖрд░ 520 рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЪрд░реНрдЪрд╛ рд╣реИред

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ "ред" рдпрд╛ "..", рд▓реЗрдХрд┐рди рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
ninjatst.bash.txt

@zlolik IIUC рдЖрдк рдмрд┐рд▓реНрдб рдореЗрдирд┐рдлреЗрд╕реНрдЯ ( build.ninja ) рдЧреНрд░рд╛рдл рдиреЛрдбреНрд╕ рдореЗрдВ рдкреВрд░реНрдг рдкрде рд░рдЦрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдФрд░ рд╕реАрдПрдордХреЗ рдЖрдЙрдЯ-рдСрдл-рд╕реЛрд░реНрд╕ рдмрд┐рд▓реНрдб рдореЗрдВ рдХрд░рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рдВрдЬрд╛ рдкреВрд░реНрдг рдкрдереЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рднреА рдЖрдИрдбреАрдИ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдпрд╣ рднреА рдХрд╛рд▓реНрдкрдирд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ -c foo.c рджрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рд╡реИрд╕реЗ рднреА рдбрд┐рдлрд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рдкрде рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдирд┐рдВрдЬрд╛ рдпрд╣рд╛рдВ рдмрддрд╛рдИ рдЧрдИ рдЗрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдирд╣реАрдВ рдкрд╣рдЪрд╛рди рдкрд╛рдПрдЧрд╛ред

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

@bradking рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рдирд┐рдВрдЬрд╛ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдХреЗрд╡рд▓ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 3 рдЬреБрдбрд╝реЗ рдореБрджреНрджреЗ рд╣реИрдВ:

  1. рдЗрдирдкреБрдЯ рдирд┐рд░рдкреЗрдХреНрд╖/рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдХреЗ рд╕рд╛рде рддрд░реНрдХ, #1152 рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдгред
  2. рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░рдкреЗрдХреНрд╖/рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХред рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ - рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдпрд╣ рдХрд╣рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдкреВрд░реНрдг рдкрде рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рдкреВрд░реНрдг рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдирд┐рдВрдЬрд╛ рдореБрджреНрджрд╛ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рд╣рдорд╛рд░рд╛ред
  3. рдирд┐рд░рдкреЗрдХреНрд╖/рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХред рдЗрд╕ рдореБрджреНрджреЗред

рдореИрдВ 2 рдХрд╛рдордХрд╛рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

  1. рдкрд╣рд▓реА 2 рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП build.ninja рдЬрдирд░реЗрдЯрд░ рдХреЗ рдкрде рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ $p рдФрд░ $o рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ $p рдФрд░ $o рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдбреАрдЖрдИрдЖрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рдЬрд╣рд╛рдВ build.ninja рдЬрдирд░реЗрдЯрд░ рдЪрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
  2. рдбреЗрдкрдлрд╛рдЗрд▓ рдХреЛ рдирд┐рдВрдЬрд╛ рд╕рдВрдЧрдд рдкрде рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдХреБрдЫ рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХреЛ рднреА рдбрд┐рдлрд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдХреЛрдИ рдкреВрд░реНрдг рдкрде рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде ninja-build рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдкрд░ рдПрдХ рдереНрд░реЗрдб рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИред

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

рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди? рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдереНрд░реЗрдб рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдЖрдИ рд╣реИ...

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░,

рдпрд╣ рднреА рдХрд╛рд▓реНрдкрдирд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ -c foo.c рджрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рд╡реИрд╕реЗ рднреА рдбрд┐рдлрд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рдкрде рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

IAR v8 рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдкреВрд░реНрдг рдкрде рд╣реЛрддреЗ рд╣реИрдВред

рд╕реАрдПрдордХреЗ/рдирд┐рдВрдЬрд╛/рдЖрдИрдПрдЖрд░ рдХреЗ рд╕рд╛рде рдЖрдЙрдЯ-рдСрдл-рд╕реЛрд░реНрд╕ рдмрд┐рд▓реНрдб рдХрд░рддреЗ рд╕рдордп рд╣рдордиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдорд╛рд░рд╛ рд╣реИ: рд╕реАрдПрдордХреЗ рдХреЗ рдмрд╛рдЗрдирд░реА рдбреАрдЖрдИрдЖрд░ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдлрд╛рдЗрд▓реЗрдВ рдирд┐рдВрдЬрд╛ рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдореЗрдВ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реИрдВ, рдЖрдИрдПрдЖрд░ рджреНрд╡рд╛рд░рд╛ рдбреАрдкреАрдПрд╕ рдЖрдЙрдЯрдкреБрдЯ рдкреВрд░реНрдг рд╣реИрдВред

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

рдореИрдВрдиреЗ @bradking рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЛ рдкрдврд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ getcwd() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ?

рдореИрдВ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдХреНрдпреЛрдВ getcwd() рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛

@sebknzl рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬреЗрдирд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ build.ninja рдХреЛ рд▓рд┐рдЦреЗ рдЧрдП рдкреВрд░реНрдг рдкрде рдореЗрдВ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЬрд╛рдирдмреВрдЭрдХрд░ рдПрдХ рдХрд╛рд░рдг рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛рд░рдг рд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред getcwd() рдЖрдо рддреМрд░ рдкрд░ рд╣рд▓ рдХрд┐рдП рдЧрдП рд╕рд┐рдореНрд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдкрде рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдирд┐рдВрдЬрд╛ рдХреЛ рдмрд┐рд▓реНрдб рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдореЗрдВ рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдпрд╛ getcwd() рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдПрдХ рдбрд┐рдлрд╛рдЗрд▓ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреА рдереА, рддреЛ рдпрд╣ рдЬреЛ рдкреВрд░реНрдг рдкрде рдмрдирд╛рддрд╛ рд╣реИ рд╡рд╣ рдмрд┐рд▓реНрдб рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдЬреЗрдирд░реЗрдЯрд░ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣рдо рдЕрднреА рднреА рджреЛ рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред

ninja_workdir рдореИрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдзрд╛рдЧреЗ рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдирд┐рдВрдЬрд╛ рдХреЛ рдмрддрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЬреЗрдирд░реЗрдЯрд░ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ realpath(ninja_workdir) == realpath(getcwd()) рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм ninja_workdir == getcwd() рдирд╣реАрдВ рд╣реИред рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдирд┐рдВрдЬрд╛ рдХреЗ рд▓рд┐рдП рдиреЛрдбреНрд╕ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ realpath рд╕рдм рдХреБрдЫ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ $in рдЬреЗрдирд░реЗрдЯрд░ рдХреЗ рдЗрд░рд╛рджреЗ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

@jhasse рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдФрд░ рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рджреЗрдЦреЗрдВред

CMAKE_NINJA_GENERATOR_OPTION_ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдкреВрд░реНрдг рдкрдереЛрдВ рдХреЗ рд╕рд╛рде _build.ninja_ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ?

рдпрд╛рдиреА рдЗрд╕ рддрд░рд╣, рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

Claus-MBP:build clausklein$ cat build.ninja 

# project dir
p = /Users/clausklein/Downloads
# object dir
o = /Users/clausklein/Downloads/.ninjatst.build

rule cp
  command = cp $in $out

rule cc
  depfile = $out.d
  deps = gcc
  command = cc -I$o -c $in -o $out -MD -MT $out -MF $out.d

# All absolute paths works
build all: phony $o/foo.o

# All absolute paths works
build $o/foo.h: cp $p/foo.h.in
  IN = $p/foo.h.in

# All absolute paths works
build $o/foo.o: cc $p/foo.c || $o/foo.h
  IN = "$p/foo.c"

default all

Claus-MBP:build clausklein$ 

ninjatst.bash.txt . рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди

@ рдХреНрд▓реЙрд╕рдХреНрд▓реЗрди рд╣рдордиреЗ рд╕реАрдПрдордХреЗ рдХреЛ рдкреВрд░реНрдг рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЦрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рдЪрд░реНрдЪрд╛рдУрдВ рдХреЛ https://github.com/ninja-build/ninja/issues/1251#issuecomment -282322776 рдореЗрдВ рджреЗрдЦреЗрдВред рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдЬреЛрдбрд╝реВрдВрдЧрд╛ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ "рдЪреАрдЬреЛрдВ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд░реЗрдВ рдЬреЛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ"ред

рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ https://github.com/ninja-build/ninja/issues/1251#issuecomment -487618865 рдореЗрдВ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдирд┐рдВрдЬрд╛ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ

рддреЛ рдХреНрдпрд╛ рдпрд╣ рдореЗрд╕рдирдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ ;-)

рдкреВрд░реНрд╡рд╛рд╣реНрди 12.03.2020 рдЙрдо 12:56 рд╢реНрд░рд╛рдЗрдм рдмреНрд░реИрдб рдХрд┐рдВрдЧ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com:

@ClausKlein https://github.com/ClausKlein рд╣рдордиреЗ рд╕реАрдПрдордХреЗ рдХреЛ рдирд┐рд░рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЙрди рдЪрд░реНрдЪрд╛рдУрдВ рдХреЛ рджреЗрдЦреЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ #1251 (рдЯрд┐рдкреНрдкрдгреА) https://github.com/ninja-build/ninja/issues/1251#issuecomment-282322776 рдореЗрдВ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдЬреЛрдбрд╝реВрдВрдЧрд╛ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ "рдЪреАрдЬреЛрдВ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд░реЗрдВ рдЬреЛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ"ред

рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ #1251 (рдЯрд┐рдкреНрдкрдгреА) https://github.com/ninja-build/ninja/issues/1251#issuecomment-487618865 рдореЗрдВ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдирд┐рдВрдЬрд╛ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub https://github.com/ninja-build/ninja/issues/1251#issuecomment-598146822 рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ https://github.com/notifications/unsubscribe-auth/AAN7QWWEDHMDA45DQVPLOUDRHDEVDANCNFSM4DBNL6GA рдХреЛ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░реЗрдВред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдирд┐рдиреНрдЬрд╛ ninja_workdir рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреАрдкрдлрд╛рдЗрд▓ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдорд┐рд▓рд╛рди рдХреЗ рд▓рд┐рдП рдХрд░реЗрдЧрд╛ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рд╕рд┐рдорд▓рд┐рдВрдХ рдХреЗ рдХрд╛рд░рдг ninja_workdir != getcwd() рд╣реИред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╕рдВрдХрд▓рдХ рдЕрдм getcwd() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрд░реНрдг рдкрде рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ?

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

рдпрд╛ рд╣рдо ninja_workdir рдФрд░ getcwd() рджреЛрдиреЛрдВ рдХреЛ wrt рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдареАрдХ рд╣реИ, рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рджрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╕рдВрдХрд▓рдХ рдХреЛ рдбрд┐рдлрд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рдкрде рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ;)

@ рдХреНрд▓реЙрд╕рдХреНрд▓реЗрди рд╣рдордиреЗ рд╕реАрдПрдордХреЗ рдХреЛ рдкреВрд░реНрдг рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЦрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред #1251 (рдЯрд┐рдкреНрдкрдгреА) рдореЗрдВ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рдЪрд░реНрдЪрд╛рдПрдБ рджреЗрдЦреЗрдВред рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдЬреЛрдбрд╝реВрдВрдЧрд╛ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ "рдЪреАрдЬреЛрдВ рдХреЛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд░реЗрдВ рдЬреЛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ"ред

рдЬрдм рдЖрдкрдиреЗ @ClausKlein рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдП рдЧрдП рдкреВрд░реНрдг рдкрдереЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЯреВрдЯ рдЧрдпрд╛?

рдпрджрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЙрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрд┐рдП рдЧрдП рдбреЗрдкрдлрд╛рдЗрд▓ рдореЗрдВ рдкреВрд░реНрдг рдкрде рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рдмрд┐рд▓реНрдб рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдореЗрдВ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реЗрдбрд░ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдореЗрд░реА рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ ninja-bug.bash.txt рд▓рд┐рдВрдХ рджреЗрдЦреЗрдВред рдпрд╣ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рдПрдХ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдВрдЬрд╛ рдФрд░ рд╕реАрдПрдордХреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрдврд╝ рд▓рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ рди https://github.com/ninja-build/ninja/issues/1251#issuecomment -284533599 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ? рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдирд┐рдВрдЬрд╛ рдкреВрд░реНрдг рдкрде рдХреЛ "рдирд┐рд░рд╛рд╢" рдХрд░рддрд╛ рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ?

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

@bradking рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рд╣рдореЗрд╢рд╛ рдЫреЛрдЯрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

build jsoncpp@sha/src_lib_json_json_reader.cpp.o: cpp_COMPILER ../../../../../Users/clausklein/Workspace/cpp/jsoncpp/src/lib_json/json_reader.cpp
 DEPFILE = jsoncpp@sha/src_lib_json_json_reader.cpp.o.d
 ARGS = -Ijsoncpp<strong i="7">@sha</strong> -I. -I../../../../../Users/clausklein/Workspace/cpp/jsoncpp -I../../../../../Users/clausklein/Workspace/cpp/jsoncpp/include -I../../../../../Users/clausklein/Workspace/cpp/jsoncpp/dir1 -I../../../../../Users/clausklein/Workspace/cpp/jsoncpp/dir2 -fdiagnostics-color=always -pipe -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++17 -O3

рдореЗрд░рд╛ рдЙрджрд╛рд╣рд░рдг https://github.com/ninja-build/ninja/issues/1251#issuecomment -597877775 рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ!

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

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдпрд╣ _mesonbuild_ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рд╣реБрдЖ рдерд╛ред ;-)

рд▓реЗрдХрд┐рди, рдХреНрдпреЛрдВ рди рдкреАрдврд╝реА рдХреЛ рд╕реНрд░реЛрдд рд╡реГрдХреНрд╖ рдореЗрдВ рдирдХрд╛рд░ рджрд┐рдпрд╛ рдЬрд╛рдП?

рд╣рдо рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд╕рд╛рдкреЗрдХреНрд╖ рдмрдирд╛рдо рдкреВрд░реНрдг рдкрде рдХреЗ рдЧреБрдгреЛрдВ рдкрд░ рдмрд╣рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдВрдЬрд╛ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░рд╛рдп рдирд╣реАрдВ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рдореЗрдЯрдиреЗ рдХреА рд╣реИ рдЬрд╣рд╛рдВ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╣реА рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд┐рд▓реНрдбрд╕рд┐рд╕реНрдЯрдо рдЬрдирд░реЗрдЯрд░ рд╣рдореЗрд╢рд╛ рдпрд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдЙрдкрдХрд░рдг рдкрде рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗред рдирд┐рдВрдЬрд╛ рдХреЛ рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдорд┐рд╢реНрд░рд┐рдд рдкреВрд░реНрдг/рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдПрдХ рд╕рд░рд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░реЗрд░рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдбрд┐рдлрд╛рдЗрд▓ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдирд┐рдВрдЬрд╛ рдХреЛ рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдорд┐рд╢реНрд░рд┐рдд рдкреВрд░реНрдг/рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рдореИрдВ рд╕рд╣рдордд рд╣реВрдБ!

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

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдирд┐рдиреНрдЬрд╛ (рдбреАрдкрдлрд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рдкрде рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдкрд░) рд╕реАрдбрдмреНрд▓реНрдпреВрдбреА рдФрд░ рдЙрд╕реЗ рдорд┐рд▓реЗ рдкрде рджреЛрдиреЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдк рджреЗрдЧрд╛? рдлрд┐рд░ рдпрд╣ рд░реАрдпрд▓рдкреИрдереЗрдб рд╕реАрдбрдмреНрд▓реНрдпреВрдбреА рдХреЛ рд░реАрдпрд▓рдкреИрдереЗрдб рдбрд┐рдлрд╛рдЗрд▓-рдкрде рд╕реЗ рд╣рдЯрд╛ рджреЗрдЧрд╛ рддрд╛рдХрд┐ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд╕рдХреЗред рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдХрд╛рдо рд╣реЛ рдЬрд╛рдпреЗрдЧрд╛?

getcwd() рд╣рдореЗрд╢рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрде рд╣реИ рддрд╛рдХрд┐ рдХрджрдо рдЖрд╡рд╢реНрдпрдХ рди рд╣реЛред рдпрджрд┐ рдирд┐рдиреНрдЬрд╛ realpath() рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╛рдЗрд▓-рдкреНрд░рджрддреНрдд рдкреВрд░реНрдг рдкрде рдерд╛ рдФрд░ рдПрдХ cwd рдЙрдкрд╕рд░реНрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдЬреЛ рдХрд╛рдо рдХрд░ рд╕рдХреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, realpath() рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд-рдорд╣рдВрдЧрд╛ рд╕рд┐рд╕реНрдХрд▓ рд╣реИ, рдЬрдмрдХрд┐ рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд ninja_workdir рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдореГрддрд┐ рдореЗрдВ рдкрдереЛрдВ рдХреЛ рд╕рдореЗрдЯ рд╕рдХрддрд╛ рд╣реИред

рджреВрд╕рд░реА рджрд┐рд╢рд╛ рдореЗрдВ рдорд┐рд╢реНрд░рдг рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП: рдмрд┐рд▓реНрдб рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рдкрде рд▓реЗрдХрд┐рди рдбрд┐рдлрд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖ рдкрдеред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ realpath() рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп рдирд┐рдВрдЬрд╛ рдХреЛ $# build.ninja realpath() рд╣рд░ рдкреВрд░реНрдг рдкрде рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╢рд╛рдпрдж рдзреАрдорд╛ рд╣реЛрдЧрд╛ред

рд╣рдо рд╡рд░реНрдХрдбрд┐рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕реЗ:

getcwd (): /var/xyz/build
рдбреЗрдкрдлрд╛рдЗрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐: /home/foo/build/bar.h
realpath(depfile entry): /var/xyz/build/bar.h
рд╕рд╛рдкреЗрдХреНрд╖ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрде: bar.h
рдЗрд╕реЗ depfile рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ: /home/foo/build -> ninja_workdir

рдЗрд╕ рддрд░рд╣ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ realpath рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ ninja_workdir рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рд╣рдо рдХреИрд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореВрд▓ рд╕рд┐рдореНрд▓рд┐рдВрдХ рдпреБрдХреНрдд рддрд╛рд░реНрдХрд┐рдХ рдкрде рдХреЗ рдХрд┐рддрдиреЗ рддрд╛рд░реНрдХрд┐рдХ рдШрдЯрдХ рд╡рд░реНрдХрдбрд┐рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ? рд╣рдо рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдШрдЯрдХ рд▓реЗрдХрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрде cwd рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╣реИрдХреА рдФрд░ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╡рдг рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рд╕рд┐рдореНрд▓рд┐рдВрдХ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдЬреЛрдЦрд┐рдо рднрд░рд╛ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рддрдХ рдХреЛрдИ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддрдм рддрдХ рд╣рдореЗрдВ рд╣рд░ рдкреВрд░реНрдг рдкрде рдкрд░ realpath() рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред

рдмрд┐рд▓реНрдбрд╕рд┐рд╕реНрдЯрдо рдЬреЗрдирд░реЗрдЯрд░ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ build.ninja рдореЗрдВ рдмрд┐рд▓реНрдб рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдФрд░ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╕рдордп рд╡рд░реНрдХрдбрд┐рд░ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рддрд╛рд░реНрдХрд┐рдХ рдкрде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд░реНрдХрджрд┐рд░ рдкрде рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдирд╛ рдХрд╛ рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕реНрд░реЛрдд рд╣реИред рд╣рдореЗрдВ рдмрд╕ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдирд┐рдиреНрдЬрд╛ рддрдХ рдкрд╣реБрдВрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд ninja_workdir рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╣реИред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдХреНрд╖рдорд╛ рдХрд░реЗрдВред рдХреНрдпрд╛ рдЖрдк рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдореЗрд░рд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рддрд░реНрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛?

рдпрд╣ рдЯреВрдЯ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдмрд┐рд▓реНрдбрд╕рд┐рд╕реНрдЯрдо рдЬрдирд░реЗрдЯрд░ рдмрд┐рд▓реНрдб рдЯреНрд░реА рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕рд┐рдореНрд▓рд┐рдВрдХ рдбрд╛рд▓рддрд╛ рд╣реИ (рдмрд┐рд▓реНрдб рдЯреНрд░реА рдореЗрдВ рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╛рд╣рд░ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП):

getcwd (): /var/xyz/build
рдбреЗрдкрдлрд╛рдЗрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐: /home/foo/build/subdir-link/bar.h
realpath(depfile entry): /var/xyz/build/subdir-real/bar.h
рд╕рд╛рдкреЗрдХреНрд╖ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрде: subdir-real/bar.h
рдЗрд╕реЗ рдбрд┐рдлрд╛рдЗрд▓ рдПрдВрдЯреНрд░реА рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ: ???

рд╕реАрдПрдордХреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдЬрдирд░реЗрдЯрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рднрд▓реЗ рд╣реА рд╣рдо рдпрд╣ рдХрд╣рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реЛрдВ рдХрд┐ рдпрд╣ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдлрд┐рд░ рднреА рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ:

getcwd (): /var/xyz/build
1000 рдбреАрдкрд╛рдЗрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ: /home/foo/ext-lib/bar{1,2,...}.h
1000 рд╡рд╛рд╕реНрддрд╡рд┐рдХрдкрде(рдбреАрдкрд╛рдЗрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ): /var/xyz/ext-lib/bar{1,2,...}.h
1000 рд╕рд╛рдкреЗрдХреНрд╖ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрде: cwd рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдХреЛрдИ рдирд╣реАрдВ

рдЕрдм рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдпрд╣ 1000 рд╕реНрд░реЛрддреЛрдВ рдХреА рдЕрд╢реБрджреНрдзрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХрднреА рднреА рд╣рд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╡рд╣ 1 рдорд┐рд▓рд┐рдпрди realpath() рдХреЙрд▓ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЗрд╕ рдЕрдиреБрдорд╛рдиреА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорд┐рд▓рд╛рди рдирд╣реАрдВ рд╣реИред рдФрд░ рдпрд╣ рд╣рд░ рдмрд╛рд░ рдПрдХ рд╕реНрд░реЛрдд рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдФрд░ рдЙрд╕рдХреЗ рдбреАрдкрдлрд╛рдЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИред

рдмрд┐рд▓реНрдб рдЯреНрд░реА рдХреЗ рдЕрдВрджрд░ рд╕рд┐рдореНрд▓рд┐рдВрдХ -> рд╣рд╛рдБ, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреНрдп рдореБрджреНрджреЗ рд╡реИрд╕реЗ рднреА рд╣реЛрдВрдЧреЗ (рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд╛рди рдХреЗ)ред

рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдмрд▓реНрдХрд┐ рдХреГрддреНрд░рд┐рдо рд▓рдЧрддрд╛ рд╣реИред рдЖрдо рддреМрд░ рдкрд░ рдбрд┐рдлрд╛рдЗрд▓ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рд╕рд┐рд╕реНрдЯрдо рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдирд╣реАрдВред

рдпрджрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛ рдмрди рдЬрд╛рддреА рд╣реИ, рддреЛ рд╣рдо рд╡рд░реНрдХрдбрд┐рд░ рдХреЛ .ninja_deps рдореЗрдВ рдХреИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЖрдЙрдЯ-рдСрдл-рд╕реЛрд░реНрд╕ рдмрд┐рд▓реНрдб рдореЗрдВ рдмрд╣реБрдд рдХрдо рдбрд┐рдлрд╛рдЗрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рдмрд┐рд▓реНрдб рдЯреНрд░реА рдкрд░ рднреА рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВрдЧреАред рдпрд╣ рдмрд╣реБрдд рдЖрдо рд╣реЛрдЧрд╛:

getcwd (): /var/xyz/build
1000 рдбреАрдкрд╛рдЗрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ: /home/foo/project-source/bar{1,2,...}.h
1000 рд╡рд╛рд╕реНрддрд╡рд┐рдХрдкрде(рдбреАрдкрд╛рдЗрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ): /var/xyz/project-source/bar{1,2,...}.h
1000 рд╕рд╛рдкреЗрдХреНрд╖ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрде: cwd рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдХреЛрдИ рдирд╣реАрдВ

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

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдбреЗрдкрдлрд╛рдЗрд▓ рдореЗрдВ рдкреВрд░реНрдг рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрде рдорд┐рд╢реНрд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ "рдмрд╣реБрдд рдЖрдо" рдХреИрд╕реЗ рд╣реЛрдЧрд╛ ??

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

рд╢рд╛рдпрдж рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЧрд▓рдд рд╕рдордЭрд╛ред рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм 3000 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ depfile рд╣реИ рдпрд╛ 300 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде depfiles рдХреЗ рд▓рд┐рдП рд╡реЗ 3 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрджрд╛рд╣рд░рдг рдереЗ?

рдореЗрд░рд╛ рдорддрд▓рдм рдерд╛ рдХрд┐ 1000 depfile рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ depfiles рдореЗрдВ рдлреИрд▓реА рд╣реБрдИ рд╣реИрдВред рдпрд╣ рдПрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдХрдИ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ 10000 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдЙрдирдХреЗ рдкрде рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХрд╣реАрдВ рднреА рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд┐рд▓реНрдб рдЯреНрд░реА рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдЖрдк рдПрдХ рдЙрджрд╛рд╣рд░рдг CMakeLists.txt рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрдереЛрдВ рдХрд╛ рдРрд╕рд╛ рдорд┐рд╢реНрд░рдг рд╣реЛрддрд╛ рд╣реИ (1000 рд╣реЛрдирд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ)?

CMakeLists.txt рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реАрдПрдордХреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдорд┐рд╢реНрд░рдг рдкрде рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реАрдПрдордХреЗ рдХреЗ рдЗрд╢реНрдпреВ рдЯреНрд░реИрдХрд░ рдореЗрдВ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рдирд┐рдВрдЬрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдП рдмрд┐рдирд╛ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ рд╕реАрдПрдордХреЗ рдЕрдВрдХ 13894 ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд┐рд▓реНрдб рдЯреНрд░реА рдореЗрдВ рдпрд╛ рдЗрди-рд╕реЛрд░реНрд╕ рдмрд┐рд▓реНрдб рдХрд░рддреЗ рд╕рдордп рд╕реНрд░реЛрддреЛрдВ (рдФрд░ рд╢рд╛рдпрдж рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ) рдХреЗ рд▓рд┐рдП рднреА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдкреВрд░реНрдг рдкрде рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рд╕реАрдПрдордХреЗ рдХреЗ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдЬреЗрдирд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рд╣рдо рдирд┐рдВрдЬрд╛ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдбреЗрдлрд╛рдЗрд▓реНрд╕ рдкреВрд░реНрдг рдкрде рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ рдФрд░ рд╡реЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ build.ninja ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрде рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХреЗрдВ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ, рд╣рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╢рд╛рдпрдж рдЖрдк рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/ClausKlein/build-performance/commit/8013836486e3a459474eb374f6c3da5e20983443

рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╕рдорд╕реНрдпрд╛ https://github.com/ninja-build/ninja/issues/1251#issue -210080507 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ
рдпрд╣ рдЙрддрдирд╛ рд╣реА рд▓рдХреНрд╖реНрдп рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рддрдирд╛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╛рдиреА 2 рд╕рдмрдбреНрдпреВрдЕрд░реНрд╕ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ 2 рд╕реЛрд░реНрд╕ рдлрд╛рдЗрд▓реНрд╕ рд╣реИрдВ:

PWD=/Users/clausklein/Workspace/build-performance/build

rule cp
  command = cp $in $out

rule cc
  depfile = $out.d
  deps = gcc
  command = gcc -c -I$PWD $IN -o $out $FLAGS -MMD -MT $out -MF $out.d

rule link
  command = gcc -o $out $in $LINK_PATH $LINK_LIBRARIES

build foo: phony foo.h
build foo.h: cp foo.h.in

build bin/main0.o: cc /Users/clausklein/Workspace/build-performance/build/subdir0/main.c || foo.h
  IN = /Users/clausklein/Workspace/build-performance/build/subdir0/main.c
build /Users/clausklein/Workspace/build-performance/build/subdir0/file0.o: cc /Users/clausklein/Workspace/build-performance/build/subdir0/file0.c || foo.h
  IN = /Users/clausklein/Workspace/build-performance/build/subdir0/file0.c

build bin/main1.o: cc /Users/clausklein/Workspace/build-performance/build/subdir1/main.c || foo.h
  IN = /Users/clausklein/Workspace/build-performance/build/subdir1/main.c
build /Users/clausklein/Workspace/build-performance/build/subdir1/file0.o: cc /Users/clausklein/Workspace/build-performance/build/subdir1/file0.c || foo.h
  IN = /Users/clausklein/Workspace/build-performance/build/subdir1/file0.c

build bin/main0: link bin/main0.o /Users/clausklein/Workspace/build-performance/build/subdir0/file0.o 
build bin/main1: link bin/main1.o /Users/clausklein/Workspace/build-performance/build/subdir1/file0.o 

build all: phony foo bin/main0 bin/main1 
default all

рдпрд╣ рд╕реАрдПрдордХреЗ рдХреЗ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдЬреЗрдирд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореЗрдХ рд╕рд┐рдореНрд▓рд┐рдВрдХ рдореБрджреНрджреЗ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ?

рдореЗрдХ рд╕рд┐рдореНрд▓рд┐рдВрдХ рдореБрджреНрджреЗ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ?

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

рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЕрднреА рдХреЗ рд▓рд┐рдП ninja_workdir рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╣реИ рдФрд░ рдХрдо рд╕реЗ рдХрдо рдирд┐рдВрдЬрд╛ рдХреЛ рдорд┐рд╢реНрд░рд┐рдд рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рд╕рдореЗрдЯрдирд╛ рд╕рд┐рдЦрд╛рдирд╛ рд╣реИ, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ getcwd() рд╕рдмрд╕реЗ рдКрдкрд░ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХрдо рд╕реЗ рдХрдо рдорд┐рд╢реНрд░рд┐рдд рдкрде рд╕рд╛рдорд╛рдиреНрдп рдиреЛ-рд╕рд┐рдорд▓рд┐рдВрдХ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдлрд┐рд░ рдмрд╛рдж рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ninja_workdir рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдХреЛрдИ рдЗрд╕реЗ рдареАрдХ рдХрд░реЗред рдореИрдВ рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рдмрд╣реБрдд рдирд╛рд░рд╛рдЬ рд╣реВрдВред

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

рдХреГрдкрдпрд╛ рдХреЛрдИ рдЗрд╕реЗ рдареАрдХ рдХрд░реЗред рдореИрдВ рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рдмрд╣реБрдд рдирд╛рд░рд╛рдЬ рд╣реВрдВред

рдореИрдВ рд╕реАрдПрдордХреЗ рдФрд░ рд╡реАрдПрд╕рд╕реАрдУрдбреА рдХреЗ рд╕рд╛рде рдПрдЖрд░рдПрдо-рдЬреАрд╕реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЬрдм рдореИрдВ рдЗрди-рд╕реЛрд░реНрд╕ рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдкрде "рдмрд┐рд▓реНрдб" рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реЛрддреЗ рд╣реИрдВ ...

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореМрдЬреВрдж рд╣реИ: рд╕реЛрд░реНрд╕ рдЯреНрд░реА рдХреЗ рдмрд╛рд╣рд░ рдмрд┐рд▓реНрдб рдбреАрдЖрдИрдЖрд░ рдХреЛ рдЪреБрдирд╛! рдпрд╛рдиреА _$рдЯреАрдПрдордкреАрдбреАрдЖрдИрдЖрд░/..._

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

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

@@ -241,7 +241,7 @@ void cmNinjaTargetGenerator::AddIncludeFlags(std::string& languageFlags,
   // Add include directory flags.
   std::string includeFlags = this->LocalGenerator->GetIncludeFlags(
     includes, this->GeneratorTarget, language,
-    language == "RC", // full include paths for RC needed by cmcldeps
+    true, // full include paths for RC needed by cmcldeps
     false, config);
   if (this->GetGlobalGenerator()->IsGCCOnWindows()) {
     std::replace(includeFlags.begin(), includeFlags.end(), '\\', '/');
@@ -1133,8 +1133,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement(
   const std::string& fileConfig, bool firstForConfig)
 {
   std::string const language = source->GetLanguage();
-  std::string const sourceFileName =
-    language == "RC" ? source->GetFullPath() : this->GetSourceFilePath(source);
+  std::string const sourceFileName = source->GetFullPath();
   std::string const objectDir = this->ConvertToNinjaPath(
     cmStrCat(this->GeneratorTarget->GetSupportDirectory(),
              this->GetGlobalGenerator()->ConfigDirectory(config)));

рдзреНрдпрд╛рди рджреЗрдВ , cmake рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЪ рдерд╛, рд▓реЗрдХрд┐рди рджреЗрдЦреЗрдВ https://github.com/ninja-build/ninja/issues/1251

рд╣рдореЗрдВ рдирд┐рдВрдЬрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЪ рдЪрд╛рд╣рд┐рдП!

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

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

@ рдЧреНрд░реИрдВрдбрдХреНрд░рд┐рд╕ рдЧреНрд░реЗрдЯ! рдЗрд╕реЗ Output рдЯреИрдм рдореЗрдВ рднреА рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдореМрдХрд╛?

@weliveindetail https://github.com/GrandChris/TerminalRelativePath/issues рдкрд░ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рд╡реАрдПрд╕рд╕реАрдУрдбреА рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдЯреИрдм рдПрдХреАрдХреГрдд рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдПрдкреАрдЖрдИ рд╣реИред

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

рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реАрдПрдордХреЗ рдЕрдВрдХ 21865 рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЖрдпрд╛ред рдпрд╣ рдПрдХ рдРрд╕реЗ рдорд╛рдорд▓реЗ рдХрд╛ рдПрдХ рдФрд░ build.ninja рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ (рд╕рдВрднрд╡?)

1917 рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд ninja_workdir рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдЗрд╕рдХрд╛ рд╡рд┐рд▓рдп рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЕрдиреБрд╡рд░реНрддреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

@jhasse рдореИрдВ рдЗрд╕ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдкрд╕реНрдЯреНрд░реАрдо рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред ninja_workdir рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдКрдкрд░ рдЕрдкрдирд╛ рдкрдХреНрд╖ рд░рдЦрд╛ рд╣реИред рдЖрдк рдФрд░ рдХреНрдпрд╛ рд╡рд┐рдХрд▓реНрдк рд╕реБрдЭрд╛рддреЗ рд╣реИрдВ?

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

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рджреЛ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдВрдЧреЗ:

рдпрд╣ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдФрд░ рдореВрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдИрдбреАрдИ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рдпрд╛ рддреЛ рдЖрдИрдбреАрдИ рдХреЛ рдареАрдХ рдХрд░реЗрдВ, рдпрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ /FC рдпрд╛ -fabs-path-diagnostics рдкрд╛рд╕ рдХрд░реЗрдВред

рдпрд╣ рдбреАрдмрдЧ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рджрд░реНрдЬ рдкрдереЛрдВ рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рднреА рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ -fdebug-prefix-map рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ: ninja-bug.bash.txt

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ, рдпрд╣ рдирд┐рдВрдЬрд╛ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рджреЛ рдореБрджреНрджреЗ

  1. "рдореЗрд░рд╛ рдЖрдИрдбреАрдИ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рд╕рд╣реА рдлрд╛рдЗрд▓ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ"
  2. "рдореБрдЭреЗ рдбреАрдмрдЧ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рдкреВрд░реНрдг рдкрде рдЪрд╛рд╣рд┐рдП"

рдЖрдЧреЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ XY рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ (X "рдкреВрд░реНрдг рдФрд░ рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХреЛ рдорд┐рд▓рд╛ рд░рд╣рд╛ рд╣реИ" рдФрд░ Y рдпрд╛ рддреЛ 1. рдпрд╛ 2 рд╣реИ)ред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕рдорд╛рдзрд╛рди "рдЕрдиреНрдп рд╕рднреА рдЯреВрд▓рд┐рдВрдЧ рдореЗрдВ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдирд╛" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдореИрдВ рднреА рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ред

рдпрд╣ рдЬреАрдПрдирдпреВ рдЬреАрд╕реАрд╕реА рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИрдВ!

рдкреВрд░реНрд╡рд╛рд╣реНрди 05.03.2021 рдЙрдо 16:58 рд╕реНрдХреНрд░рд┐рдм рдЬрди рдирд┐рдХрд▓рд╛рд╕ рд╣рд╕ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com:

рдпрд╛ рддреЛ IDE рдареАрдХ рдХрд░реЗрдВ, рдпрд╛ /FC https://docs.microsoft.com/de-de/cpp/build/reference/fc-full-path-of-source-code-file-in-diagnostics рдкрд╛рд╕ рдХрд░реЗрдВ рдпрд╛ -fabs- рдкрде-рдирд┐рджрд╛рди https://reviews.llvm.org/D23816 рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдПред

рдпрд╣ рдбреАрдмрдЧ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рджрд░реНрдЬ рдкрдереЛрдВ рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ: ninja-bug.bash.txt

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ, рдпрд╣ рдирд┐рдВрдЬрд╛ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

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

рджреЛ рдореБрджреНрджреЗ ... (1) ... (2) ... рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рд╣рдо рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд╕рд╛рдкреЗрдХреНрд╖ рдмрдирд╛рдо рдкреВрд░реНрдг рдкрде рдХреЗ рдЧреБрдгреЛрдВ рдкрд░ рдмрд╣рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдВрдЬрд╛ рдЪрд╛рд╣рд┐рдП
рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░рд╛рдп рдирд╣реАрдВ рдмрдирд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕реБрд▓рдЭрд╛ рд░рд╣реА рд╣реИ рдЬрд╣рд╛рдБ
рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╣реА рдирд┐рд░реНрдорд╛рдг рдХреЗ рднреАрддрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд┐рд▓реНрдбрд╕рд┐рд╕реНрдЯрдо рдЬрдирд░реЗрдЯрд░ рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛
рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЙрдкрдХрд░рдг рдкрде рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗред

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

рдирд┐рдиреНрдЬрд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рдЫреЛрдЯреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
build.ninja (рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд) рдореЗрдВ рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдХреЗ рд╕рд╛рде рдПрдХ рдбрд┐рдлрд╛рдЗрд▓ рдореЗрдВ рдкреВрд░реНрдг рдкрде
рд╡рд┐рдкрд░реАрдд)ред рдореИрдВ рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдордирдорд╛рдиреЗ рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рд╕рдореЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдБ, рдХреЗрд╡рд▓
рдкрд╣рдЪрд╛рдиреЗрдВ рдХрд┐ /path/to/some/file рдПрдХ depfile рдореЗрдВ some/file in . рдХреЗ рд╕рдорд╛рди рд╣реИ
рдмрд┐рд▓реНрдб рдлрд╝рд╛рдЗрд▓ /path/to/build.ninja ред

рдЗрд╕ рддрд░рд╣ рдХреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдорд┐рд╕рд╛рд▓ рд╣реИред рдЬрдм рдирд┐рдВрдЬрд╛ рдкрд╣рд▓реА рдмрд╛рд░ рд╢реБрд░реВ рд╣реБрдЖ, рдЖрд╢рд╛
рдХреНрдпрд╛ рд╡рд╣ рдкрде рд╣рдореЗрд╢рд╛ ninja рджреНрд╡рд╛рд░рд╛ рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рдореЗрдВ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рдмрд╛рдЗрдЯ-рдлреЙрд░-рдмрд╛рдЗрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЬрд┐рд╕реЗ рдмрд┐рд▓реНрдб рдлрд╝рд╛рдЗрд▓ рдЬрдирд░реЗрдЯрд░ рдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ
build.ninja ред git blame -M -C -w -- src/util.cc рдЪрд▓рд╛рдПрдБ рдФрд░ рдЗрддрд┐рд╣рд╛рд╕ рджреЗрдЦреЗрдВ
CanonicalizePath рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕рд╛рдордиреЗ рдЖрдП рдереЗ рдЬрд╣рд╛рдВ рд╡рд╣
рдбрд┐рдЬрд╛рдЗрди рджрд░реНрд╢рди рдХреЛ рд╢рд┐рдерд┐рд▓ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдпрд╣ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХрд╛ рдПрдХ рдФрд░ рд╡рд░реНрдЧ рд╣реИред

рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВ

рдирд┐рдВрдЬрд╛ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░рд╛рдп рдирд╣реАрдВ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВред

рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЯреНрд░реИрдХреНрдЯреЗрдмрд▓ рдирд╣реАрдВ рд╣реИред

рддреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджрд╛ рдХреНрдпрд╛ рд╣реИ? рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдореИрдВ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рд╣реВрдБред

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

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

рдЕрдкрд╕реНрдЯреНрд░реАрдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдВрдЬрд╛ рдХреА рдиреАрддрд┐ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдЬреЗрдирд░реЗрдЯрд░ рдмрдирд╛рдХрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдирд┐рдВрдЬрд╛ рдЕрдкрд╕реНрдЯреНрд░реАрдо, рдЕрдЧрд░ рдЙрдиреНрд╣реЗрдВ рджрдХреНрд╖рддрд╛ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд┐рдирд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп ninja_workdir рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдмрд┐рд▓реНрдб рдлрд╝рд╛рдЗрд▓ рдЬреЗрдирд░реЗрдЯрд░ рд╕реЗ рдбрд┐рдлрд╛рдЗрд▓ рдкрдереЛрдВ рдХрд╛ рд╕реНрдЯрд╛рдЗрд▓ рд╕рд╛рдордВрдЬрд╕реНрдп рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб рдХреЗ рдмрд╛рдж рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдбрд┐рдлрд╛рдЗрд▓ рдореЗрдВ рдкрдереЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдорд╛рдВрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдВрдЬрд╛ рд▓реЛрдб рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрд┐рд▓реНрдб рдлрд╝рд╛рдЗрд▓ред рдЙрд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдорд╛рдВрдб рдХреА рдЕрдкрдиреА рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЧрдд рд╣реЛрдЧреА рдЬреЛ #1924 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИ ( ninja рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрди-рдореЗрдореЛрд░реА рд▓реБрдХрдЕрдк)ред рдЗрд╕рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп рд╕рдорд╛рдзрд╛рди рдирд┐рдиреНрдЬрд╛ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдирд┐рд░рдкреЗрдХреНрд╖ рд░рд╛рд╕реНрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рд░рдкреЗрдХреНрд╖ рдФрд░ рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХреЛ рдорд┐рд▓рд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдХрд╖реНрдЯрдкреНрд░рдж рдПрд░реНрдЧреЛрдиреЙрдорд┐рдХреНрд╕ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ninja рдХреЛ рдирдХрд▓реА рд▓рдХреНрд╖реНрдп рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ninja out/my_executable рдпрд╛ ninja out/foo/bar.o , рддреЛ рдЙрдиреНрд╣реЗрдВ рдкреВрд░реНрдг рдкрде, рдпрд╛ рдирд┐рдВрдЬрд╛ рдкрд╛рд╕ рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдПрдХ рднреНрд░рдорд┐рдд "рдЕрдЬреНрдЮрд╛рдд рд▓рдХреНрд╖реНрдп" рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╡рд┐рдкрд░реАрдд рд╕рдорд╕реНрдпрд╛ рднреА рдореМрдЬреВрдж рд╣реИ: рдЬрдм рдмрд┐рд▓реНрдб.рдирд┐рдВрдЬрд╛ рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рдиреНрдЬрд╛ рдХреЛ рдПрдХ рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддрд╛ рд╣реИред

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

рдмреЗрд╢рдХ, рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдбрд┐рдлрд╛рдЗрд▓реНрд╕, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдВрдЬрд╛ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдирд┐рд░рдкреЗрдХреНрд╖ рдмрдирд╛рдо рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рд╕рдордХрдХреНрд╖реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

@comex рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдПрдХ рд╡реИрдз рдЪрд┐рдВрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирдпрд╛ рдЕрдВрдХ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ?

рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХреНрдпреЛрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреЗ рдЯреВрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрде рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ [...]

рдореИрдВ рдЕрд╕рд╣рдордд рд╣реВрдВред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп ninja_workdir рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ - рдбрд┐рдлрд╛рдЗрд▓ рдкрдереЛрдВ рдХрд╛ рд╕реНрдЯрд╛рдЗрд▓ рд╕рд╛рдордВрдЬрд╕реНрдп [...]

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ ninja_workdir -рд╕реНрдЯрд╛рдЗрд▓ рд╕реБрд▓рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ ninja_workdir- рд╢реИрд▓реА рдХреЗ рдореЗрд▓-рдорд┐рд▓рд╛рдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?

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

рдореИрдВрдиреЗ #1924 рдХреЗ рд╕рдорд╛рди рд╕рд╛рдордВрдЬрд╕реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП #1925 рдЦреЛрд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди ninja_workdir рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЗ рдмрд┐рдирд╛ред рдпрд╣ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рддрд╛рд░реНрдХрд┐рдХ рд╡рд░реНрдХрдбрд┐рд░ рдкрдереЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрдгрдп рд╕реЗ рдбрд┐рдлрд╛рдЗрд▓ рдкрдереЛрдВ рдХреЛ рд╕рдореЗрдЯрдиреЗ рдХреЗ рдирд┐рд░реНрдгрдп рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИред

[...] рдЯреВрд▓рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдбрд┐рдлрд╛рдЗрд▓реНрд╕ рдореЗрдВ рдЙрддреНрдкрдиреНрди рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдЬрд┐рдиреНрд╣реЗрдВ рд╡реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдРрд╕реЗ рдЯреВрд▓реАрдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИ?

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

рдЖрдкрдХреА рд╕реНрдерд┐рддрд┐ рдПрдХ рд░рд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрддреА рд╣реИ рдХрд┐ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд░реВрдк рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИрдВред рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рдПрдХ рдЕрд▓рдЧ рд░рд╛рдп рд╣реИ рдХрд┐ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреВрд░реНрдг рдкрде рдмреЗрд╣рддрд░ рд╣реЛрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХреЛ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдг рдХрд╛ рд╕реНрдерд╛рди рд╣реИред

рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд┐рдВрдЬрд╛ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдПрдХ рдЫреЛрдЯреА рд░рд╛рд╢рд┐ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рджреБрдЦ рд╣реЛрддрд╛ рд╣реИ? рдЗрд╕рдХрд╛ рди рд╣реЛрдирд╛ рдмрд╣реБрдд рдмрдбрд╝реА рд▓рд╛рдЧрдд рдХреЛ рдмрд╛рд╣рд░реА рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рдВ рдпрд╣ рд╕рдЪ рд╣реИ!

рдФрд░ рдкреВрд░реНрдг рдкрде рдХреЗ рд╕рд╛рде, cmake рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдкрде рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдпрд╣ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрдо рдХрд░рддрд╛ рд╣реИред

рдкреВрд░реНрд╡рд╛рд╣реНрди 09.03.2021 рдЙрдо 19:20 рд╢реНрд░рд╛рдЗрдм рдмреНрд░реИрдб рдХрд┐рдВрдЧ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com:

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХреЛ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдг рдХрд╛ рд╕реНрдерд╛рди рд╣реИред

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

рд╕реАрдПрдордХреЗ рдХреЛ рд╕рд░реНрдХреБрд▓рд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рд╕рд┐рд░реНрдл рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЬреЛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдЗрд╕ рдирд┐рдВрдЬрд╛ рдореБрджреНрджреЗ рд╕реЗ рдореБрдЦреМрдЯрд╛ рдерд╛ред рдпрджрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛрддрд╛, рддреЛ рд╣рдо рд╕реАрдПрдордХреЗ рдХреЗ рдореБрджреНрджреЗ рдХреЛ рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╣реА рдЦреЛрдЬ рд▓реЗрддреЗред

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

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

SebastianBoe picture SebastianBoe  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

phcerdan picture phcerdan  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jlebar picture jlebar  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

greened picture greened  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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