CMake 3.15 рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдордЪреЗ рдкреНрд░рдХрд╛рд╢рди

рдЬрд╛рдЧрд╛ рдШреЗрддрд▓реА рдХреНрд░реЙрд╕-рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдУрдкрди рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрдирд░реЗрдЯрд░рдЪреЗ рдкреНрд░рдХрд╛рд╢рди рд╕реАрдПрдордХреЗ 3.15, рдЬреЗ Autotools рд▓рд╛ рдкрд░реНрдпрд╛рдп рдореНрд╣рдгреВрди рдХрд╛рдо рдХрд░рддреЗ рдЖрдгрд┐ KDE, LLVM/Clang, MySQL, MariaDB, ReactOS рдЖрдгрд┐ рдмреНрд▓реЗрдВрдбрд░ рд╕рд╛рд░рдЦреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ. CMake рдХреЛрдб C++ рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ BSD рдкрд░рд╡рд╛рдиреНрдпрд╛рдЕрдВрддрд░реНрдЧрдд рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.

CMake рдПрдХ рд╕реЛрдкреА рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛, рдореЙрдбреНрдпреВрд▓реНрд╕рджреНрд╡рд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд╛рдврд╡рдгреНрдпрд╛рдЪреЗ рд╕рд╛рдзрди, рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡рд╛рдВрдЪреА рдХрд┐рдорд╛рди рд╕рдВрдЦреНрдпрд╛ (M4, Perl рдХрд┐рдВрд╡рд╛ Python рд▓рд╛ рдмрдВрдзрдирдХрд╛рд░рдХ рдирд╛рд╣реА), рдХреЕрд╢рд┐рдВрдЧ рд╕рдорд░реНрдерди, рдХреНрд░реЙрд╕-рдХрдВрдкрд┐рд▓реЗрд╢рдирд╕рд╛рдареА рд╕рд╛рдзрдирд╛рдВрдЪреА рдЙрдкрд╕реНрдерд┐рддреА, рдмрд┐рд▓реНрдб рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдЖрд╣реЗ. рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдореНрд╕ рдЖрдгрд┐ рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕рдЪреНрдпрд╛ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реЗрдгреАрд╕рд╛рдареА рдлрд╛рдЗрд▓реНрд╕, рдЪрд╛рдЪрдгреА рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдЖрдгрд┐ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдкреЕрдХреЗрдЬреЗрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЙрдкрд╕реНрдерд┐рддреА ctest рдЖрдгрд┐ cpack рдпреБрдЯрд┐рд▓рд┐рдЯреА, рдкрд░рд╕реНрдкрд░рд░рд┐рддреНрдпрд╛ рдмрд┐рд▓реНрдб рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА cmake-gui рдпреБрдЯрд┐рд▓рд┐рдЯреА.

рдореБрдЦреНрдп рд╕реБрдзрд╛рд░рдгрд╛:

  • рдирд┐рдиреНрдЬрд╛-рдЖрдзрд╛рд░рд┐рдд рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрдирд░реЗрдЯрд░рдордзреНрдпреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рдЪрдкрд│рдНрдкрд▓ рджреНрд╡рд╛рд░реЗ рд╡рд┐рдХрд╕рд┐рдд;
  • Windows рд╕рд╛рдареА рдХреНрд▓реЕрдВрдЧ рдХрдВрдкрд╛рдЗрд▓рд░рдЪреНрдпрд╛ рд╡реЗрд░рд┐рдПрдВрдЯрд╕рд╛рдареА рдЬреЛрдбрд▓реЗрд▓реЗ рд╕рдорд░реНрдерди рдЬреЗ MSVC ABI рд╕рд╣ рддрдпрд╛рд░ рдХрд░рддреЗ, рдкрд░рдВрддреБ GNU-рд╢реИрд▓реАрддреАрд▓ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░реНрдпрд╛рдп рд╡рд╛рдкрд░рддреЗ;
  • MSVC ABI (MS Visual Studio) рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕рджреНрд╡рд╛рд░реЗ рд╡рд╛рдкрд░рд▓реЗрд▓реА рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдпрдмреНрд░рд░реА рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА CMAKE_MSVC_RUNTIME_LIBRARY рдЖрдгрд┐ MSVC_RUNTIME_LIBRARY рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдЬреЛрдбрд▓реЗ;
  • MSVC рд╕рд╛рд░рдЦреНрдпрд╛ рд╕рдВрдХрд▓рдХрд╛рдВрд╕рд╛рдареА, CMAKE__FLAGS рдмрд╛рдп рдбреАрдлреЙрд▓реНрдЯ "/W3" рд╕рд╛рд░рдЦреНрдпрд╛ рдЪреЗрддрд╛рд╡рдгреА рдирд┐рдпрдВрддреНрд░рдг рдзреНрд╡рдЬрд╛рдВрдЪреА рд╕реВрдЪреА рдХрд░рдгреЗ рдерд╛рдВрдмрд╡рддреЗ;
  • рдкреНрд░рддреНрдпреЗрдХ рдХреЛрдб рдлрд╛рдЗрд▓рд╕рд╛рдареА CMAKE__COMPILER_ID рдЖрдгрд┐ LANGUAGE рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╡рд╛рдкрд░реВрди, рд▓рдХреНрд╖реНрдп рдлрд╛рдЗрд▓реНрд╕рд╕рд╛рдареА рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд░реНрдпрд╛рдп рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "COMPILE_LANG_AND_ID:" рдЬрдирд░реЗрдЯрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддреА рдЬреЛрдбрд▓реА;
  • рдЬрдирд░реЗрдЯрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддреА C_COMPILER_ID, CXX_COMPILER_ID рдордзреНрдпреЗ,
    CUDA_COMPILER_ID, Fortran_COMPILER_ID, COMPILE_LANGUAGE,
    COMPILE_LANG_AND_ID рдЖрдгрд┐ PLATFORM_ID рдиреЗ рдПрдХрд╛ рд╕реВрдЪреАрд╢реА рдПрдХрд╛ рдореВрд▓реНрдпрд╛рд╢реА рдЬреБрд│рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЬреНрдпрд╛рдЪреЗ рдШрдЯрдХ рд╕реНрд╡рд▓реНрдкрд╡рд┐рд░рд╛рдорд╛рдиреЗ рд╡рд┐рднрдХреНрдд рдХреЗрд▓реЗ рдЖрд╣реЗрдд;

  • CMAKE_FIND_PACKAGE_PREFER_CONFIG рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдЬреЛрдбрд▓реЗ рдЬреЗрдгреЗрдХрд░реВрди find_package() рдХреЙрд▓рд┐рдВрдЧ рдкреНрд░рдердо рдкреЕрдХреЗрдЬрдЪреА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдлрд╛рдЗрд▓ рд╢реЛрдзреЗрд▓, рдЬрд░реА рдПрдЦрд╛рджрд╛ рд╢реЛрдзрдХ рдЙрдкрд▓рдмреНрдз рдЕрд╕рд▓рд╛ рддрд░реАрд╣реА;
  • рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдпрдмреНрд░рд░реАрд╕рд╛рдареА, PUBLIC_HEADER рдЖрдгрд┐ PRIVATE_HEADER рдЧреБрдгрдзрд░реНрдо рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреНрдпрд╛рджреНрд╡рд╛рд░реЗ PUBLIC_HEADER рдЖрдгрд┐ PRIVATE_HEADER рд╡рд┐рддрд░реНрдХ рдкрд╛рд╕ рдХрд░реВрди install(TARGETS) рдХрдорд╛рдВрдб рд╡рд╛рдкрд░реВрди рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд;
  • MSVC cl 19.05 рдЖрдгрд┐ рдирд╡реАрди рдЖрд╡реГрддреНрддреНрдпрд╛ рд╡рд╛рдкрд░реВрди рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛рдирд╛ рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдУ рдбреАрдмрдЧрд░рдордзреНрдпреЗ "рдЬрд╕реНрдЯ рдорд╛рдп рдХреЛрдб" рдореЛрдб рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА CMAKE_VS_JUST_MY_CODE_DEBUGGING рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдЖрдгрд┐ рд▓рдХреНрд╖реНрдп рдЧреБрдгрдзрд░реНрдо VS_JUST_MY_CODE_DEBUGGING рдЬреЛрдбрд▓реЗ;
  • FindBoost рдореЙрдбреНрдпреВрд▓ рдкреБрдиреНрд╣рд╛ рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рдЖрддрд╛ рдЗрддрд░ рд╢реЛрдз рдореЙрдбреНрдпреВрд▓реНрд╕рдЪреНрдпрд╛ рдЙрдкрд╕реНрдерд┐рддреАрдд рдХреЙрдиреНрдлрд┐рдЧ рдЖрдгрд┐ рдореЙрдбреНрдпреВрд▓ рдореЛрдбрдордзреНрдпреЗ рдЕрдзрд┐рдХ рд╕рдордЧреНрд░рдкрдгреЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ;
  • рд╕рдВрджреЗрд╢() рдХрдорд╛рдВрдб рдЖрддрд╛ NOTICE, VERBOSE, рдпрд╛ рдкреНрд░рдХрд╛рд░рд╛рдВрдирд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ.
    рдбреАрдмрдЧ рдЖрдгрд┐ рдЯреНрд░реЗрд╕;

  • "export(PACKAGE)" рдХрдорд╛рдВрдб рдЖрддрд╛ CMAKE_EXPORT_PACKAGE_REGISTRY рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рджреНрд╡рд╛рд░реЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рд╕рдХреНрд╖рдо рдХреЗрд▓реНрдпрд╛рд╢рд┐рд╡рд╛рдп рдХрд╛рд╣реАрд╣реА рдХрд░рдд рдирд╛рд╣реА.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛