Ninja: рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдХреЗ рдЪреАрдиреА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдЯреЛрдВрд╕ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдиреЛрдЯрд┐рд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдЬреБрд▓ре░ 2013  ┬╖  32рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ninja-build/ninja

рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдХреЗ рдЪреАрдиреА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдирд┐рдВрдЬрд╛ рдХреЗ рд╕рд╛рде рдХреНрд░реЛрдорд┐рдпрдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдХрдВрд╕реЛрд▓ рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдлрд╝рд╛рдЗрд▓ рдиреЛрдЯрд┐рд╕ рдХреЗ рдЯрди рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЗрдорд╛рд░рдд рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдиреЛрдЯрд┐рд╕ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

ц│ицДП path ц│ицДП цЦЗф╗╢ я╝Ъ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдкрде рд╢рд╛рдорд┐рд▓ рд╣реИ

рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдордХрдХреНрд╖ я╝Ъ рд╣реИ
рдиреЛрдЯ: рдлрд╝рд╛рдЗрд▓ рд╕рд╣рд┐рдд: .....

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

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

рдПрдХ рдлреНрд░реЗрдВрдЪ рд▓реЛрдХрд▓, рдирд┐рдВрдЬрд╛ 1.8.2 рдФрд░ CMake 3.10.2 рдХреЗ рд╕рд╛рде, рдпрд╣ рдЕрднреА рднреА рд╣реЛрддрд╛ рд╣реИ ...

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

рдПрдХ рдЕрдВрдЧреНрд░реЗрдЬреА рдЗрдВрд╕реНрдЯреЙрд▓ рдкрд░ "рдиреЛрдЯ: рдлрд╛рдЗрд▓ рд╕рд╣рд┐рдд:% s% s \ n" рд╕реНрдЯреНрд░рд┐рдВрдЧ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ VC \ bin \ 1033 \ clui.dll рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред

1033 "рдЕрдВрдЧреНрд░реЗрдЬреА (рд╕рдВрдпреБрдХреНрдд рд░рд╛рдЬреНрдп рдЕрдореЗрд░рд┐рдХрд╛)" рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред

рдореИрдВ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ 1033 рд▓реЛрдХреЗрд▓ рдореЗрдВ cl рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдХрдИ рд╕реНрдерд╛рди рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВ, рддреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ / showIncludes parser рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ рдЦреЛрдЬ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред : /

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ cmcldeps (рдЗрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ CMake рдкрд╛рд░реНрд╕рд░) рдПрдХ regex рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ "[^:] +: [^:] +: (*ред *)", рд╕рднреА рдЖрдЙрдЯрдкреБрдЯ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╣рдерд┐рдпрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ showincludes рдЖрдЙрдЯрдкреБрдЯ рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдХреЛрдб рдХреЛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдВрддрддрдГ рдРрд╕рд╛ рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдХрд┐рд╕реА рднреА рдХреЙрдкреАрд░рд╛рдЗрдЯ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред :)

рдореБрд╢реНрдХрд┐рд▓ рд╣рд┐рд╕реНрд╕рд╛ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рднреНрд░рдорд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЪреЗрддрд╛рд╡рдиреА рдпрд╛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рддреЗ рд╕рдордп рдХреНрдпрд╛ рдЖрдк Visual Studio cl.exe рдХрд╛ рдЪреАрдиреА рдЖрдЙрдЯрдкреБрдЯ рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐: ascii 58 рдирд╣реАрдВ рд╣реИ, рддрд╛рдХрд┐ рдПрдХ рд╢рд┐рдХрди рдЬреЛрдбрд╝ рд╕рдХреЗред рд╢рд╛рдпрдж рд▓рд╛рдЗрди рдирдВрдмрд░ "(\ d +)" рдЬреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╣реЛрдЧрд╛, рдЙрдкрдпреЛрдЧреА рд╕рдВрдХреЗрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ (рд╕рд╛рдл) рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд╡реАрдПрд╕ рдХреЗ рд╡рд┐рджреЗрд╢реА рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрдиреНрдп рд╕реНрдерд╛рдиреАрдп рд╕рдВрд╕рд╛рдзрди рд╣реЛрдВрдЧреЗ (рдЬреИрд╕реЗ рдЬреЗрдП рдХреЗ рд▓рд┐рдП 1041)ред
рд╣рдордиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛: рд╣рдореЗрд╢рд╛ рд╡реАрдПрд╕ рдХрд╛ рдПрди рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдлрд┐рд░ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рднрд╛рд╖рд╛ рдкреИрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ :(

рд▓реЗрдХрд┐рди рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, "рддреНрд░реБрдЯрд┐ Cnnnn" рдФрд░ "рдЪреЗрддрд╛рд╡рдиреА Cnnnn" рдХрднреА рднреА рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ @shamham рдиреЗ рдХрд╣рд╛, рд▓рд╛рдЗрди рдирдВрдмрд░ рдЕрдзрд┐рдХ рдЖрд╢рд╛рдЬрдирдХ

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдирд╣реАрдВ рдпрд╛ рдирд╣реАрдВ: ascii 58 рдирд╣реАрдВ рд╣реИрдВред рдЬрд╛рдкрд╛рдиреА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдпреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ ascii 58 рд╣реИрдВред

FWIW, рдЬрд╛рдкрд╛рдиреА рдЖрдЙрдЯрдкреБрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

C:\cygwin\home\oku>type main.c
#include <stdio.h>
int nah(void){}; /* Trigger "function must return a value */
main(){return nah();}

C:\cygwin\home\oku>cl /showIncludes main.c
Microsoft(R) C/C++ Optimizing Compiler Version 16.00.40219.01 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

main.c
уГбуГв: уВдуГ│уВпуГлуГ╝уГЙ уГХуВбуВдуГл:  C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\stdio.h
уГбуГв: уВдуГ│уВпуГлуГ╝уГЙ уГХуВбуВдуГл:   C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\crtdefs.h
уГбуГв: уВдуГ│уВпуГлуГ╝уГЙ уГХуВбуВдуГл:    C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\sal.h
уГбуГв: уВдуГ│уВпуГлуГ╝уГЙ уГХуВбуВдуГл:     c:\program files (x86)\microsoft visual studio10.0\vc\include\codeanalysis\sourceannotations.h
уГбуГв: уВдуГ│уВпуГлуГ╝уГЙ уГХуВбуВдуГл:    C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\vadefs.h
уГбуГв: уВдуГ│уВпуГлуГ╝уГЙ уГХуВбуВдуГл:   C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\swprintf.inl
c:\cygwin\home\oku\main.c(2) : warning C4716: 'nah' : хАдуВТш┐ФуБХуБкуБСуВМуБ░уБДуБСуБ╛уБЫуВУ

рд╕рдВрдмрдВрдзрд┐рдд рдХрд▓рд╛: https://bugzilla.mozilla.org/show_bug.cgi?id=587372 (рд╡рд╣рд╛рдВ рдХрд╛ рддрд░реАрдХрд╛: env var рд╕реЗ рдЙрдкрд╕рд░реНрдЧ рдкрдврд╝реЗрдВ, рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ / рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдЯреЛрдХреИрдлрд╝ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ) рдкрд╛рд░реНрд╕ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдорд╣рд╛рди рд╣реИред)

рдореЛрдЬрд┐рд▓рд╛ рдмрдЧ рдХреЗ рд╕рдорд╛рди рдЖрдЗрдбрд┐рдпрд╛: рдЗрд╕рдореЗрдВ рдПрдХ рдЯреЙрдкрд╡реЗрд▓ var msvs_includes_prefix рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЬрдирд░реЗрдЯрд░ рдпрд╣ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдбрдореА #include "knownheader.h" рдлрд╝рд╛рдЗрд▓ / showIncludes рдХреЗ рд╕рд╛рде рдФрд░ рдЬреЛ рдХреБрдЫ рднреА рд╣реЛ, рдЙрд╕реЗ "knowheader.h" рдХреЗ рд╕рд╛рдордиреЗ рд▓рд┐рдЦреЗрдВред "рдЙрд╕ toplevel var рдореЗрдВ cl.exe рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВред рдирд┐рдВрдЬрд╛ рддрдм msvs_includes_prefix / showIncludes рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред

рдЬрдмрдХрд┐ CMake рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рд╢рд╛рдорд┐рд▓ рдЙрдкрд╕рд░реНрдЧ рдПрдХ рдбрдореА рдмрд┐рд▓реНрдб рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ,
https://github.com/Kitware/CMake/blob/master/Modules/CMakeClDeps.s.seake
рдЬрд╣рд╛рдБ рдПрдХ regex рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╛рдж рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ рдкрд░ рдЙрдкрдХрд░рдг рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,
https://github.com/Kitware/CMake/blob/master/Source/cmcldeps.cxx
рдФрд░ std :: string :: root рдХрд╛ рдЙрдкрдпреЛрдЧ cl.exe рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

CMake рднреА рдкрд╣рд▓реЗред рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП .rc рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП cmcldeps рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред CL рдлрд╝рд╛рдЗрд▓, рдЬреЛ рдирд┐рд░реНрднрд░рддрд╛ рдлрд╝рд╛рдЗрд▓ рдЬрдирд░реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдЗрд╕реЗ rc рдЯреВрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдпрд╣ рдирд┐рдВрдЬрд╛ рдореЗрдВ рдХреИрд╕реЗ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

https://github.com/martine/ninja/pull/665

рдХреНрдпрд╛ рдпрд╣ рдЧреИрд░-рдЕрд╕рд┐рд╕реА рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

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

рдПрдХ рдлреНрд░реЗрдВрдЪ рд▓реЛрдХрд▓, рдирд┐рдВрдЬрд╛ 1.8.2 рдФрд░ CMake 3.10.2 рдХреЗ рд╕рд╛рде, рдпрд╣ рдЕрднреА рднреА рд╣реЛрддрд╛ рд╣реИ ...

665 рдиреЗ msvc_deps_prefix рдЬреЛрдбрд╝рд╛ред рдХреНрдпрд╛ cmake рд╡рд╣ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ? @syntheticpp @mathstuf

@ рдирд┐рдХреЛ рдореИрдВ рдореЗрдВ рдХреЛрдб рджреЗрдЦрддрд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЕрднреА рднреА рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрдореНрдпреБрдирд┐рдЯреА рдкрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ 15.9.7 ...

рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрднреА рднреА рдирд┐рдореНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд╣реЛ рд░рд╣рд╛ рд╣реИ:
рд╕реАрдПрдордХреЗ 3.14
рдирд┐рдВрдЬрд╛ 1.8.2 (рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХреЗ рд╕рд╛рде рдПрдХ рдЬрд╣рд╛рдЬ)
рдлреНрд░реЗрдВрдЪ рд▓реЛрдХреЗрд▓ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдмреЗрд╣рддрд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб: рд╕реАрдПрд▓ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП VSLANG=1033 рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ ред

рдкреБрд░рд╛рдирд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб:
рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдорд╛рд░рд╛, рдореЗрд░рд╛ рдХрд╛рдо $CMAKE_PATH\share\cmake-3.14\Modules\Platform\Windows-MSVC.cmake рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рдерд╛:
#set(CMAKE_NINJA_DEPTYPE_${lang} msvc) (рдореЗрд░рд╛ рдореЗрдВ рд▓рд╛рдЗрди 368)

рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╕реАрдПрдордХреЗ рджреНрд╡рд╛рд░рд╛ рдбрд┐рдкреНрд╕ рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп deps = gcc рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рдмрд┐рд▓реНрдб рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред YMMVред рдпрд╣ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИред

deps = gcc рд╕реЗрдЯ рдХрд░рдирд╛ рд╢рд╛рдпрдж depfile рд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реМрдореНрдп рд╣реИред

@DrFrankenstein рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рдирдЬрд╛ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдВрдЧреЗ? https://github.com/ninja-build/ninja/pull/1671

рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рд╣рдлреНрддреЗ рдПрдХ рд╢реЙрдЯ рджреВрдБрдЧрд╛!

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдореИрдВрдиреЗ рдЙрд╕ рд╢рд╛рдЦрд╛ рд╕реЗ рдирд┐рдВрдЬрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛, рдлрд┐рд░ рдирд┐рдВрдЬрд╛ рдХреЗ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдЦреБрдж рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рдЕрднреА рднреА рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд▓реАрдХ рдХрд░ рджрд┐рдпрд╛ред
image

рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдореБрджреНрджрд╛ MSVC рдХреЗ рд╕рд╛рде рд╣реИрдВрдбрд▓рд░ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдХрд░рдг рдХреНрд▓реАред рдПрдл рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рдкрд╣рдЪрд╛рди рд░рд╣рд╛ рд╣реИ?

рдХреБрдВрдЖ...

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рд╛рд░реНрдбрдХреЛрдб рдЕрдВрдЧреНрд░реЗрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред

https://github.com/ninja-build/ninja/blob/master/src/clparser.cc

string CLParser::FilterShowIncludes(const string& line,
                                    const string& deps_prefix) {
  const string kDepsPrefixEnglish = "Note: including file: ";
  const char* in = line.c_str();
  const char* end = in + line.size();
  const string& prefix = deps_prefix.empty() ? kDepsPrefixEnglish : deps_prefix;
  if (end - in > (int)prefix.size() &&
      memcmp(in, prefix.c_str(), (int)prefix.size()) == 0) {
    in += prefix.size();
    while (*in == ' ')
      ++in;
    return line.substr(in - line.c_str());
  }
  return "";
}

@DrFrankenstein

рдХреНрдпрд╛ рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЙрд╕ рдЕрдВрдЧреНрд░реЗрдЬреА рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЦрд┐рд▓рд╡рд╛рдбрд╝ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ?

рд╣рд╛! рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд▓ рд╡рд╣рд╛рдВ рджреЗрдЦрдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛ред рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдкрдиреЗ рдореБрдЭреЗ рдореМрдХрд╛ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрдХрдбрд╝рд╛ рдерд╛ред

рдореИрдВрдиреЗ рдЕрднреА рд░рд╛рдд рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдХрдВрдкреНрдпреВрдЯрд░ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдореИрдВ рдХрд▓ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдЖрдКрдВрдЧрд╛!

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

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

рдПрдирдХреЛрдбрд┐рдВрдЧ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗред deps_prefix рд▓реИрдЯрд┐рди -1 рдореЗрдВ рд╣реИ (рдЬрд╣рд╛рдВ рдХреЙрд▓рди рд╕реЗ рдкрд╣рд▓реЗ NBSP 0xA0 рд╣реИ), рдФрд░ line рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ CP437 рдореЗрдВ рд╣реИ (NBSP = 0xFF)ред
image

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реАрдПрд▓ рдЦреБрдж CP437 рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди CMake- рдЬрдирд░реЗрдЯреЗрдб рдирд┐рдпрдоред Ninja рд▓реИрдЯрд┐рди -1 рдореЗрдВ рд╣реИред рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╕реАрдПрдордХреЗ рдкрдХреНрд╖ рдореЗрдВ рдХреБрдЫ рд░реВрдкрд╛рдВрддрд░рдг рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЦреБрджрд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдВрд╕реЛрд▓ рдХреЗ рдХреЛрдбрдкреЗрдЬ рдореЗрдВ рд╕реАрдПрд▓ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдЧрд╛ред ( рд╕реНрд░реЛрдд 1 , рд╕реНрд░реЛрдд 2 )ред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдХреБрдЫ рдФрд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╢рд╛рдпрдж рд╣рдо рджреЛрдиреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдПрдХ рдЖрдо рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдХреЗ рджреЛрдиреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ UTF-8 (рдпрд╛ рдЬреЛ рднреА рдирд┐рдВрдЬрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ), рдЬреИрд╕реЗ рдХрд┐ CL рдЖрдЙрдЯрдкреБрдЯ рдкрд░ MultiByteToWideChar(CP_OEMCP, ...) рдХреЙрд▓ рдХрд░рдХреЗ, рдФрд░ MultiByteToWideChar(1252, ...) рдирд┐рдпрдореЛрдВ рд╕реЗ рдЖрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ред

рдЗрд╕ рдкрд░ рд╡рд╛рдкрд╕ рд╕реЛрдЪрдирд╛ ... рдпрд╣ рд╕реАрдПрдордХреЗ рджреЛрд╖ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рдВрдбреЛрдЬ рдкрд░, execute_process рдХрдорд╛рдВрдб рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ UTF-8 рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИ (рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ ENCODING рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдпрд╣ UTF-8 рдореЗрдВ рдирд┐рдпрдореЛрдВ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд┐рдЦрддрд╛ рд╣реИред рдирд┐рдиреНрдЬрд╛ рдлрд╝рд╛рдЗрд▓ (рдЬрд╣рд╛рдБ NBSP 0xA0 рд╣реИ рди рдХрд┐ 0xFF)ред

рдореИрдВрдиреЗ CMAKE_DETERMINE_MSVC_SHOWINCLUDES_PREFIX ENCODING NONE (рдХреЛрдИ рд░реВрдкрд╛рдВрддрд░рдг рдирд╣реАрдВ рдХрд░реЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ CMake рдореЗрдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧ рд░рд╣рд╛ рдерд╛ред

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

рдпрд╣рд╛рдБ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдФрд░ рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдкрд░ @bradking рд╡рд┐рдЪрд╛рд░?

рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рдиреНрдЬрд╛ рдХреЛ рдЕрдЬреНрдЮреЗрдп (рдЬрдм рддрдХ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ '' / 'рдХреЗ рд▓рд┐рдП ASCII рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, Windows рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рдВрдЬрд╛ рдХреЗ CLParser::FilterShowIncludes рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ memcmp рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП msvc_deps_prefix рдореВрд▓реНрдп рдЬрд░реВрд░рддреЛрдВ MSVC рдХреЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдореИрдЪ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдПред рд╕реАрдПрдордХреЗ рдХреЛ рдЗрд╕реЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред CMake рд╡рд░реНрддрдорд╛рди рдореЗрдВ UTF-8 рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдЬреЛ рд╕рдм рдЧрд╛рдпрдм рд╣реИ рд╡рд╣ build.ninja рдХрд╛ рдорд╛рди рд▓рд┐рдЦрддреЗ рд╕рдордп рдХреЛрдбрдкреЗрдЬ рдХреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рд╡рд╛рдкрд╕ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИред

IIRC, MSVC рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдФрд░ / рдпрд╛ рдЭрдВрдбреЗ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рд╕рдВрдХрд▓рдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рд╕рдВрдХрд▓рдХ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдирд┐рдВрдЬрд╛ build.ninja рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдВрдЬрд╛ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╣рд╛рдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рд▓реЗрдХрд┐рди рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

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

рд╣рд╛рд▓рд╛рдБрдХрд┐, _is_ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╣реИ рдЬреЛ CL, VSLANG рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рднрд╛рд╖рд╛ рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдмрдЧ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдВрдЬрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ VSLANG=1033 рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдмрдЧ рдХреЛ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗрдЧрд╛ред

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

CMake рд╕рднреА рдмрд┐рд▓реНрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ rules.ninja рдХреЛ UTF-8 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд▓рд╛рдЗрди msvc_deps_prefix = ц│ицДП: хМЕхРлцЦЗф╗╢: , рдФрд░ рдлрд┐рд░ рдЪреАрдЬреЗрдВ рддрдп рд╣реЛ рдЧрдИрдВред (рд╡рд╣ рдлрд╝рд╛рдЗрд▓ GB2312 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рд╣реБрдЖ рдХрд░рддреА рдереА, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛрдб рдкреЗрдЬ 936 рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред) рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реАрдПрдордХреЗ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ rules.ninja UTF-8 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рдП?

рдореБрдЭреЗ рдХреЛрдб рдкреЗрдЬ 936 рдпрд╛ 65001 рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдХреЛрдИ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╛рдзрд╛рди рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ред

рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдФрд░ CMAKE_CXX_FLAGS рдореЗрдВ / W3 рдХреЗ рдмрдЬрд╛рдп add / W2 рдХреЗ рд╕рд╛рде рдЗрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдорд┐рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░реЗрдВ

рдпрд╣ # 1766 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ

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

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

MRYangY picture MRYangY  ┬╖  23рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

zmike picture zmike  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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