рд╕реНрдирд╛рддрдХ + рдПрд▓рдПрд▓рд╡реАрдПрдо

рдпрд╣ рд▓рдШреБ рдкреЛрд╕реНрдЯ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдврд╛рдВрдЪреЗ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рдкрд░реЗрд╢рд╛рди рдХрд┐рдП рдмрд┐рдирд╛ред рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдкрд╖реНрдЯ рд╕реАрдПрдордХреЗ рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдХреМрди рдирд╣реАрдВ рдШреВрдордирд╛ рдЪрд╛рд╣реЗрдЧрд╛, рдФрд░ рдЕрдВрдд рдореЗрдВ, рдХреЗрд╡рд▓ рдЖрд▓рд╕реА рдХреЗ рд▓рд┐рдП :)

рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдЗрдирд╛рдпрдд рдХрд░рдирд╛ рд╣реИ, рдЧреНрд░реИрдбрд▓ рд▓рд┐рдкрд┐ рдореЗрдВ рд╕рд┐рд░реНрдл рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБред

рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЗ рддрд╣рдд рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ "рд╣рд┐рдЯ"ред :) "рд╣рд┐рдЯ" рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд░рдг рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред рдореБрдЭреЗ рд▓рд┐рдирдХреНрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рджреЛрдиреЛрдВ рдХреЗ рддрд╣рдд рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдХрд╣рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рд╣рд░ рдмрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдореИрдВ рдкреВрд░реЗ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдФрд░, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЙрдирдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдерд╛, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ рдЖрд░рдЯреАрдЯреАрдЖрдИ рдФрд░ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдирд┐рд░реНрдорд┐рдд рд▓рд┐рдирдХреНрд╕ рдмрд╛рдпрдиреЗрд░реА рд╣реИрдВред рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдПрдХ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдХреНрд▓реИрдВрдЧ рдХреЗ рдЕрдВрджрд░ LLVM-xxx-win64.exe рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

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

cmake -DCMAKE_BUILD_TYPE=Release 

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

 cmake --build . --config Release 

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

рджрд░рдЕрд╕рд▓, рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧреА: cpp-llvm ред
рдпрд╣рд╛рдБ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╡рд┐рдиреНрдпрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

 plugins { id 'org.bitbucket.akornilov.cpp-llvm' version '0.1' } llvm { version = '9.0.0' // Required version. } 

рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ:

  • рд╕реНрдерд╛рдкрд┐рдд рдЬрд╛рд╡рд╛ (8 рдФрд░ рдКрдкрд░)ред
  • рд╕реНрдерд╛рдкрд┐рдд рдЧреНрд░реЗрдбреЗрд▓ (рдореИрдВрдиреЗ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рдордп рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг 5.6.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛)
  • рд▓рд┐рдирдХреНрд╕ рдкрд░ Gcc / CLang (рдХрдо рд╕реЗ рдХрдо C ++ 11 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг)ред
  • рд╡рд┐рдВрдбреЛрдЬ рдкрд░ MSVC 2019 (рдЬреИрд╕реЗ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг)ред
  • рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ 'рд╕реАрдкреАрдкреА-рдПрдкреНрд▓реАрдХреЗрд╢рди' рдпрд╛ 'рд╕реАрдкреАрдкреА-рд▓рд╛рдЗрдмреНрд░реЗрд░реА' рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдПрд▓рдПрд▓рд╡реАрдПрдо рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдордп рдиреЗрдЯрд╡рд░реНрдХ рддрдХ рдкрд╣реБрдВрдЪ (рдпрд╛ рдСрдлрд╝рд▓рд╛рдЗрди рдореЛрдб, рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред

рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЗ рд╕рдорд░реНрдерд┐рдд рд╕рдВрд╕реНрдХрд░рдг:

  • 9.0.0
  • 8.0.0

Windows (msvc 2019) рдФрд░ Linux (Debian 10.0 + CLang 10.0) рдкрд░ x86_64 рдХреЗ рд▓рд┐рдП рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рдмрдирд╛рддрд╛ рд╣реИред рдЖрд░рдЯреАрдЯреАрдЖрдИ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд┐рдд рдФрд░ рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд░рд┐рд▓реАрдЬ рдФрд░ рдбрд┐рдмрдЧ рдореЗрдВ рдЕрдкрд╡рд╛рджред

  • 7.1.0
  • 7.0.1
  • 7.0.0
  • 6.0.1
  • 6.0.0
  • 5.0.2
  • 5.0.1
  • 5.0.0
  • 4.0.1
  • 4.0.0
  • 3.9.1
  • 3.9.0
  • 3.8.1
  • 3.8.0
  • 3.7.1
  • 3.7.0
  • 3.6.2
  • 3.6.1
  • 3.6.0
  • 3.5.2
  • 3.5.1
  • 3.5.0
  • 3.4.2
  • 3.4.1
  • 3.4
  • 3.3
  • 3.2
  • 3.1
  • 3.0

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдПрд▓рдПрд▓рд╡реАрдПрдо рд╕рд░реНрд╡рд░реЛрдВ рд╕реЗ рдмрдирддрд╛ рд╣реИ, рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд рдХреЗрд╡рд▓ x86_64 рдЖрд░рдЯреАрдЯреАрдЖрдИ рдХреЗ рд╕рд╛рде рдмрдВрдж рдФрд░ рдЕрдкрд╡рд╛рджред

рд╡рд░реНрддрдорд╛рди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 gradle llvmVersions 

 > Task :llvm-app:llvmVersions 9.0.0 8.0.0 BUILD SUCCESSFUL in 2s 1 actionable task: 1 executed 

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

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

рдХреЗрд╡рд▓ рд╕реНрдереИрддрд┐рдХ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд┐рд╕реА рдЕрдЬреНрдЮрд╛рдд рдХрд╛рд░рдг рд╕реЗ, рдмрд┐рд▓реНрдб LLVM рдмрд╛рдЗрдВрдбрд┐рдВрдЧ MSVC рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓рд╛рдпрдмреНрд░реЗрд░реАрдЬрд╝ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред

рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрди рд╡рд┐рдиреНрдпрд╛рд╕


рдЖрдк рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ (.tar.xz рдпрд╛ .tar.gz) рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


 llvm { version = '7.0.1' serverUrl = 'http://releases.llvm.org/7.0.1/clang%2bllvm-7.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz' } 

рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг (рд╕рдВрд╕реНрдХрд░рдг = xxx) рдЙрд╕ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЪрдпрдирд┐рдд рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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


 llvm { version = '7.0.1' localPath = '<path to unpacked LLVM build>' } 

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

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

рд╡реНрдпрдХреНрддрд┐рдЧрдд рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ:


 llvm { version = '9.0.0' components = ['Engine', 'OrcJIT'] } 

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

рд╕рднреА рдЙрдкрд▓рдмреНрдз рдШрдЯрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ:

 gradle llvmComponents 

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


 llvm { version = '9.0.0' forceReleaseLinux = true } 

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

рдЦреИрд░, рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдЕрдкрдиреЗ рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░реВрдВрдЧрд╛ :), рдЬрд┐рд╕реЗ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

cpp-build-tuner рд╕рдВрдХрд▓рди рд╕рдордп рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмрд╛рдЗрдирд░реА рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

cpp-ide-рдЬрдирд░реЗрдЯрд░ рдЖрдкрдХреЛ рдХрдИ рдЖрдИрдбреАрдИ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рди рдПрдХреАрдХрд░рдг рджреЗрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрд▓рдПрд▓рд╡реАрдПрдо рд╣реЗрдбрд░ рдХреЗ рд░рд╛рд╕реНрддреЗ рд╣реЛрдВрдЧреЗ рдФрд░ рдЖрдИрдбреАрдИ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред



Cpp-ide-рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛:

 FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring project ':llvm-app'. > Cannot change dependencies of configuration ':llvm-app:cppCompileDebug' after it has been resolved. 

рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рджреЗрдЦрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ cpp-ide-рдЬрдирд░реЗрдЯрд░ рдХреЛ cpp-llvm рдХреЗ рдмрд╛рдж рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ:

 plugins { id 'cpp-application' id 'org.bitbucket.akornilov.cpp-build-tuner' version '0.7' id 'org.bitbucket.akornilov.cpp-llvm' version '0.1' id 'org.bitbucket.akornilov.cpp-ide-generator' version '0.5' } 

рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдпреБрдкреАрдбреА:
Cpp-llvm v0.3 рдкреНрд▓рдЧрдЗрди рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА :

  1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕реНрдерд╛рдиреАрдп рдХреИрд╢ рдореЗрдВ рд╕рднреА LLVM рдбрд╛рдЙрдирд▓реЛрдб рдХреЛ рдЦрд╛рд▓реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП llvmCleanCache рдХрд╛рд░реНрдп llvmCleanCache рдЧрдпрд╛ рд╣реИред
  2. рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╕рдорд░реНрдердиред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдВрд╕реНрдХрд░рдг 9.0.0 рд╡рд┐рдВрдбреЛрдЬ / рд▓рд┐рдирдХреНрд╕, рдЬреАрд╕реАрд╕реА / рдорд┐рдЧ-рдбрдмреНрд▓реНрдпреВ 64 / рд╕реАрдПрд▓рдПрдВрдЧ рдФрд░ рдПрдордПрд╕рд╡реАрд╕реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 llvm { version = '9.0.0' linkage = Linkage.SHARED } 


рдпреБрдкреАрдбреА

рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╕рдореВрд╣ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
 plugins { id 'loggersoft.cpp-llvm' version '0.5' } 

рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрддрд╛: gradle-cpp.sourceforge.io
рдкреНрд░рд▓реЗрдЦрди: sourceforge.net/p/gradle-cpp/wiki/cpp-llvm

Source: https://habr.com/ru/post/hi469855/


All Articles