Ninja: рдлрд╝реАрдЪрд░ рдЕрдиреБрд░реЛрдз: рдХреЙрдореНрдкрдбреАрдмреА рдЯреВрд▓ рдореЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдирд┐рдпрдо рдирд╛рдо рдорд┐рд▓рд╛рди

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

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

рд╕рдмрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╕рдВрд╕реНрдХрд░рдг 3.2 рдореЗрдВ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ) рд╕реАрдПрдордХреЗ рдХреЗ рдирд┐рдВрдЬрд╛ рдЬрдирд░реЗрдЯрд░ рдиреЗ рдлреЙрд░реНрдо рдХреЗ рдирд┐рдпрдо рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ <lang>_COMPILER__<directory> ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рди рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдЯреНрд░реА рдХреЛ рд╕реНрдХреИрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рдЕрдиреНрдп рд╣реИрдХреНрд╕ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдирд╛ рд╣реЛрдЧрд╛ред 3.2 рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛ рд╕реАрдПрдордХреЗ <lang>_COMPILER рдлреЙрд░реНрдо рдХреЗ рдирд┐рдпрдо рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬреНрдЮрд╛рди рдХреЗ рдмрд┐рдирд╛ - рдЬреЗрдиреЗрд░рд┐рдХ рдЯреВрд▓реНрд╕ рд╕реЗ рдкреВрдЫрддрд╛рдЫ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

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

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

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

(рдЕрд╕рдВрдмрдВрдзрд┐рдд: рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк CMAKE_EXPORT_COMPILE_COMMANDS рд╕реЗрдореЗрдХ рдХреЛ рд╕реАрдзреЗ рдПрдХ рд╕рдВрдХрд▓рди рдбреЗрдЯрд╛рдмреЗрд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред)

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

рдЕрддреАрдд рдореЗрдВ рдПрдХ "рдирд┐рдпрдо" рдЙрдкрдХрд░рдг рдерд╛ (7b67e48a1479c6fc7326c55756088bd57d64fc82) рдЬреЛ рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдЙрд╕ рдЯреВрд▓ рд╕реЗ рд╣рдо рдХреБрдЫ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рдереЗ:

ninja -t compdb `ninja -t rules | grep 'CXX_COMPILER_'`

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

рд╡рд╣ рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдзрдиреНрдпрд╡рд╛рджред

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

(рдЕрд╕рдВрдмрдВрдзрд┐рдд: рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк CMAKE_EXPORT_COMPILE_COMMANDS рд╕реЗрдореЗрдХ рдХреЛ рд╕реАрдзреЗ рдПрдХ рд╕рдВрдХрд▓рди рдбреЗрдЯрд╛рдмреЗрд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред)

рдХреНрдпрд╛ рдпрд╣рд╛рдВ рдХреЛрдИ рд╣реИ? рдореИрдВ

рдирд┐рдпрдо рдЙрдкрдХрд░рдг рдмрд┐рд▓реНрдб рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд▓рдЧрддрд╛ рд╣реИя╝Я

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @nico рдХрд╛ рд╕реБрдЭрд╛рд╡ рдкрд╕рдВрдж рд╣реИред рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдХреБрдЫ рдФрд░ рдЕрдзрд┐рдХ рдкрд░рд┐рд╖реНрдХреГрдд (рдЬреИрд╕реЗ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдорд┐рд▓рд╛рди) рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @sarcasm рдХреЗ рд╕реБрдЭрд╛рдП рдЧрдП рдХрд╛рдордХрд╛рдЬ рдпрд╣рд╛рдВ рдмрджрд╕реВрд░рдд рд╣реИрдВ, рдирд┐рдВрдЬрд╛ рдореЗрдВ рд╣реА рдПрдХ рдФрд░ рд╕реБрдВрджрд░ рд╕рдорд╛рдзрд╛рди рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ :)

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреЛ рдбрдВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм #1377 рд╣реИред

рдпрд╣рд╛рдВ рдПрдХ рдЫреЛрдЯрд╛ рдиреЛрдЯ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕реАрдПрдордХреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП [0], ninja -t compdb (рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВ) рдХреБрдЫ рднреА рдбрдВрдк рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рдЦрд╛рд▓реА рд╕реВрдЪреА рд╣реИ [] )ред

cmake -G Ninja .
ninja -t compdb
[
]

рд╣рд╛рд▓рд╛рдВрдХрд┐, CMAKE_EXPORT_COMPILE_COMMANDS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рдХреЛ рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ:

cmake -G Ninja . -DCMAKE_EXPORT_COMPILE_COMMANDS=1
ninja -t compdb
[
]

ninja -t compdb рдЕрднреА рднреА рдЦрд╛рд▓реА рд╣реИ, рд▓реЗрдХрд┐рди compile_commands.json рдкрд╣рд▓реЗ рд╣реА рдЬрдирд░реЗрдЯ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж рдирд┐рдХреЛ!

[0] рдмрд╛рдЗрдирд░реАрдПрди рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо

ninja --version рдХрд╣рддрд╛ рд╣реИ?

1.8.2, btw рдпрд╣ рдирд┐рдВрдЬрд╛ depot_tools . рд╕реЗ рдЖ рд░рд╣рд╛ рд╣реИ

рд╡рд╣ рд╕рдВрд╕реНрдХрд░рдг #1377 рдЧрд╛рдпрдм рд╣реИред

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

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

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

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

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

evmar picture evmar  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

8l picture 8l  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ