CMake 3.16 рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд░рд┐рд▓реАрдЬ

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

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

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

  • рдЙрджреНрджреЗрд╢реНрдп C ("OBJC") рд░ рдЙрджреНрджреЗрд╢реНрдп рднрд╛рд╖рд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛ
    C++ ("OBJCXX"), рдЬреБрди рдкрд░рд┐рдпреЛрдЬрдирд╛() рд░ enable_language() рдЖрджреЗрд╢рд╣рд░реВ рдорд╛рд░реНрдлрдд рд╕рдХреНрд╖рдо рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рддреНрдпрд╕рдкрдЫрд┐ ".m" ".mm" рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ рд░рд╣реЗрдХреЛ рдХреЛрдб рд╡рд╕реНрддреБ C рд░ Objective C++ рдХреЛрдбрдХреЛ рд░реВрдкрдорд╛ рдХрдореНрдкрд╛рдЗрд▓ рд╣реБрдиреЗрдЫред C++, рдкрд╣рд┐рд▓реЗ рдЬрд╕реНрддреИ;

  • рд╕реЛрд▓рд╛рд░рд┐рд╕ рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рдХреНрд▓реНрдпрд╛рдЩреНрдЧ рдХрдореНрдкрд╛рдЗрд▓рд░рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛ;
  • рдирдпрд╛рдБ рдЖрджреЗрд╢ рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдердкрд┐рдпреЛ: "cmake -E true|false" рд░рд┐рдЯрд░реНрди рдХреЛрдбрд╣рд░реВ 0 рд░ 1 рдЫрд╛рдкреНрди; "cmake --trace-redirect=" рдХреЛ рд╕рдЯреНрдЯрд╛ рдлрд╛рдЗрд▓рдорд╛ рдЯреНрд░реЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░реНрди
    "stderr"; "cmake --loglevel" рдЖрджреЗрд╢рд▓рд╛рдИ "--log-level" рдорд╛ рдкреБрди: рдирд╛рдорд╛рдХрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ рдпрд╕рд▓рд╛рдИ рдЕрдиреНрдп рдЖрджреЗрд╢рд╣рд░реВрдХреЛ рдирд╛рдорд╕рдБрдЧ рд▓рд╛рдЗрдирдорд╛ рд▓реНрдпрд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐;

  • precompilation рдХреЛ рд╕рдордпрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рд╣реЗрдбрд░ рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд╕реВрдЪреА рд╕реВрдЪреАрдмрджреНрдз рдЧрд░реНрди "target_precompile_headers()" рдЖрджреЗрд╢ рдердкрд┐рдпреЛ (рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдШрдЯрд╛рдЙрдБрдЫ);
  • "UNITY_BUILD" рдЧреБрдг рдердкрд┐рдпреЛ, рдЬрд╕рд▓реЗ рдирд┐рд░реНрдорд╛рдгрдХреЛ рдЧрддрд┐ рдмрдврд╛рдЙрди рдЬрдирд░реЗрдЯрд░рд╣рд░реВрдорд╛ рд╕реНрд░реЛрдд рдлрд╛рдЗрд▓рд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рдмреНрдпрд╛рдЪ рдореЛрдб рд╕рдХреНрд░рд┐рдп рдЧрд░реНрджрдЫ;
  • "find_file()", "find_library()", "find_path()" рдЖрджреЗрд╢рд╣рд░реВ рдердкрд┐рдпреЛ,
    "find_package()" рд░ "find_program()" рдлрд╛рдЗрд▓рд╣рд░реВ, рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ, рдкрдерд╣рд░реВ, рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рд░ рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдХреЛрдЯреАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЦреЛрдЬ рдорд╛рд░реНрдЧрд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреЗ рдЪрд▓рд╣рд░реВ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдпрд╣рд░реВ рдЦреЛрдЬреНрдиред
    рдЪрд░рд╣рд░реВ "CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH", "CMAKE_FIND_USE_CMAKE_PATH", "CMAKE_FIND_USE_CMAKE_SYSTEM_PATH", "CMAKE_FIND_USE_PACKAGE_ROOT_PATH_PATH_PATH_PATH_PATH_PATH_IN_PATH" рд░ " MAKE_FIND_USE_PACKAGE_REGIST" рдЖрдзрд╛рд░ рдЦреЛрдЬ рдорд╛рд░реНрдЧрд╣рд░реВ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ RY";

  • "рдлрд╛рдЗрд▓()" рдЖрджреЗрд╢рдорд╛ "рдлрд╛рдЗрд▓(GET_RUNTIME_DEPENDENCIES)" рдореЛрдб рдердкрд┐рдпреЛ, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЧрддрд┐рд╢реАрд▓ рд░реВрдкрдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдлрд╛рдЗрд▓ рд╡рд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЩреНрдХ рдЧрд░реНрджрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдХреЛ рд╕реВрдЪреА рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдореЛрдбрд▓реЗ GetPrerequisites() рдЖрджреЗрд╢рд▓рд╛рдИ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдпреЛ, рдЬреБрди рдЕрд╣рд┐рд▓реЗ рд╣рдЯрд╛рдЗрдПрдХреЛ рдЫ;
  • "ctest(1)" рдХрдорд╛рдгреНрдбрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рд╕реНрд░реЛрддрд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдХреНрд░рдордмрджреНрдз рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ;
  • рдЪрд▓ "CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY" рд▓рд╛рдИ рдмрд╣рд┐рд╖реНрдХрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ "CMAKE_FIND_USE_PACKAGE_REGISTRY" рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреБрдкрд░реНрдЫ;
  • рд╕реБрдзрд╛рд░рд┐рдПрдХреЛ AIX рдкреНрд▓реЗрдЯрдлрд░реНрдо рд╕рдорд░реНрдердиред "ENABLE_EXPORTS" рдЧреБрдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдлрд╛рдЗрд▓рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рд▓рд┐рдЩреНрдХрд░рдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рдЖрдпрд╛рдд рдлрд╛рдЗрд▓ рдЕрдм рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫ, ".imp" рд╡рд┐рд╕реНрддрд╛рд░рд╕рдБрдЧ рдмрдЪрдд рдЧрд░рд┐рдиреНрдЫред "MODULE" рд╡рд┐рдХрд▓реНрдкрдХреЛ рд╕рд╛рде "add_library()" рд▓рд╛рдИ рдХрд▓ рдЧрд░реЗрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХрд╛ рдкреНрд▓рдЧрдЗрдирд╣рд░реВрдорд╛, "target_link_libraries()" рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓рд┐рдЩреНрдХ рдЧрд░реНрджрд╛ рдпреЛ рдлрд╛рдЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред AIX рдорд╛ рд░рдирдЯрд╛рдЗрдо рд▓рд┐рдЩреНрдХ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдЕрд╕рдХреНрд╖рдо рдЧрд░рд┐рдПрдХреЛ рдЫ рдХрд┐рдирднрдиреЗ CMake рд▓реЗ рдЕрдм рд▓реЛрдб рд╕рдордпрдорд╛ рд▓рд┐рдЩреНрдХ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдмреИ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рддреАрдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдЧрддрд┐рд╢реАрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рд╡рд╛ рд▓реЛрдб рдЧрд░реНрди рдорд┐рд▓реНрдиреЗ рдореЛрдбреНрдпреБрд▓рд╣рд░реВрдХреЛ рд░рдирдЯрд╛рдЗрдо рд▓рд┐рдЩреНрдХрд┐рдЩ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ "CMAKE_SHARED_LINKER_FLAGS" рд░ "CMAKE_MODULE_LINKER_FLAGS" рдЪрд░рд╣рд░реВ рдорд╛рд░реНрдлрдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рд▓рд┐рдЩреНрдХрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдлреНрд▓реНрдпрд╛рдЧрд╣рд░реВрдХреЛ рд╕реВрдЪреАрдорд╛ "-Wl, -G" рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрдкрд░реНрдЫред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди