рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдХреЗ рдЪреАрдиреА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдирд┐рдВрдЬрд╛ рдХреЗ рд╕рд╛рде рдХреНрд░реЛрдорд┐рдпрдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдХрдВрд╕реЛрд▓ рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдлрд╝рд╛рдЗрд▓ рдиреЛрдЯрд┐рд╕ рдХреЗ рдЯрди рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЗрдорд╛рд░рдд рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдиреЛрдЯрд┐рд╕ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
ц│ицДП path ц│ицДП цЦЗф╗╢ я╝Ъ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдкрде рд╢рд╛рдорд┐рд▓ рд╣реИ
рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдордХрдХреНрд╖ я╝Ъ рд╣реИ
рдиреЛрдЯ: рдлрд╝рд╛рдЗрд▓ рд╕рд╣рд┐рдд: .....
рд╢рд╛рдпрдж рдирд┐рдирдЬрд╛ рдХреЗрд╡рд▓ рдЕрдВрдЧреНрд░реЗрдЬреА рд╢рдмреНрджреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╢рд╛рдорд┐рд▓ рдиреЛрдЯрд┐рд╕ рдХреЛ рдЫреАрди рд░рд╣рд╛ рд╣реИред
рдПрдХ рдЕрдВрдЧреНрд░реЗрдЬреА рдЗрдВрд╕реНрдЯреЙрд▓ рдкрд░ "рдиреЛрдЯ: рдлрд╛рдЗрд▓ рд╕рд╣рд┐рдд:% 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
рдХреНрдпрд╛ рдпрд╣ рдЧреИрд░-рдЕрд╕рд┐рд╕реА рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдПрдХ рдлреНрд░реЗрдВрдЪ рд▓реЛрдХрд▓, рдирд┐рдВрдЬрд╛ 1.8.2 рдФрд░ CMake 3.10.2 рдХреЗ рд╕рд╛рде, рдпрд╣ рдЕрднреА рднреА рд╣реЛрддрд╛ рд╣реИ ...
@ рдирд┐рдХреЛ рдореИрдВ рдореЗрдВ рдХреЛрдб рджреЗрдЦрддрд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЕрднреА рднреА рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрдореНрдпреБрдирд┐рдЯреА рдкрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ 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
рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рд╣рдлреНрддреЗ рдПрдХ рд╢реЙрдЯ рджреВрдБрдЧрд╛!
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдореИрдВрдиреЗ рдЙрд╕ рд╢рд╛рдЦрд╛ рд╕реЗ рдирд┐рдВрдЬрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛, рдлрд┐рд░ рдирд┐рдВрдЬрд╛ рдХреЗ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдЦреБрдж рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рдЕрднреА рднреА рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд▓реАрдХ рдХрд░ рджрд┐рдпрд╛ред
рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдореБрджреНрджрд╛ 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)ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реАрдПрд▓ рдЦреБрдж 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 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдПрдХ рдлреНрд░реЗрдВрдЪ рд▓реЛрдХрд▓, рдирд┐рдВрдЬрд╛ 1.8.2 рдФрд░ CMake 3.10.2 рдХреЗ рд╕рд╛рде, рдпрд╣ рдЕрднреА рднреА рд╣реЛрддрд╛ рд╣реИ ...