ืžืขืœื“ื•ื ื’ ืคื•ืŸ CMake 3.16 ื‘ื•ื™ืขืŸ ืกื™ืกื˜ืขื

ื‘ืึทืงืขื ืขื  ืžืขืœื“ื•ื ื’ ืคื•ืŸ ืึท ืงืจื™ื™ึทื–-ืคึผืœืึทื˜ืคืึธืจืžืข ืขืคืขื ืขืŸ ื‘ื•ื™ืขืŸ ืฉืจื™ืคื˜ ื’ืขื ืขืจืึทื˜ืึธืจ ืžืึทื›ืŸ 3.16, ื•ื•ืึธืก ืื™ื– ืึทืŸ ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื• ืฆื• ืึทื•ื˜ืึธื˜ืึธืึธืœืก ืื•ืŸ ืื™ื– ื’ืขื ื™ืฆื˜ ืื™ืŸ ืคึผืจืึทื“ื–ืฉืขืงืก ืึทื–ืึท ื•ื•ื™ KDE, LLVM/Clang, MySQL, MariaDB, ReactOS ืื•ืŸ Blender. ื“ื™ ืงืžืึทืงืข ืงืึธื“ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ C ++ ืื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืื•ื ื˜ืขืจ ื“ื™ BSD ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ.

CMake ืื™ื– ื ืึธื•ื˜ืึทื‘ืึทืœ ืคึฟืึทืจ ืคึผืจืึทื•ื•ื™ื™ื“ื™ื ื’ ืึท ืคึผืฉื•ื˜ ืกืงืจื™ืคึผื˜ื™ื ื’ ืฉืคึผืจืึทืš, ืึท ืžื™ื˜ืœ ืฆื• ืคืึทืจื‘ืจื™ื™ื˜ืขืจืŸ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ื“ื•ืจืš ืžืึทื“ื–ืฉื•ืœื–, ืึท ืžื™ื ื™ืžืึทืœ ื ื•ืžืขืจ ืคื•ืŸ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– (ืงื™ื™ืŸ ื‘ื™ื™ื ื“ื™ื ื’ ืฆื• M4, Perl ืึธื“ืขืจ Python), ืงืึทื˜ืฉื™ื ื’ ืฉื˜ื™ืฆืŸ, ื“ื™ ื‘ื™ื™ึทื–ื™ื™ึทืŸ ืคื•ืŸ ืžื›ืฉื™ืจื™ื ืคึฟืึทืจ ืงืจื™ื™ึทื– ื–ืึทืžืœื•ื ื’, ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื–ืฉืขื ืขืจื™ื™ื˜ื™ื ื’ ื‘ื•ื™ืขืŸ. ื˜ืขืงืขืก ืคึฟืึทืจ ืึท ื‘ืจื™ื™ื˜ ืงื™ื™ื˜ ืคื•ืŸ ื‘ื•ื™ืขืŸ ืกื™ืกื˜ืขืžืขืŸ ืื•ืŸ ืงืึธืžืคึผื™ืœืขืจืก, ื“ื™ ื‘ื™ื™ึทื–ื™ื™ึทืŸ ืคื•ืŸ ืงื˜ืขืกื˜ ืื•ืŸ ืงืคึผืึทืง ื™ื•ื˜ื™ืœืึทื˜ื™ื– ืคึฟืึทืจ ื“ื™ืคื™ื™ื ื™ื ื’ ืคึผืจื•ื‘ื™ืจืŸ ืกืงืจื™ืคึผืก ืื•ืŸ ื‘ื ื™ืŸ ืคึผืึทืงืึทื“ื–ืฉืึทื–, cmake-gui ื ื•ืฆืŸ ืคึฟืึทืจ ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื•ืข ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื‘ื•ื™ืขืŸ ืคึผืึทืจืึทืžืขื˜ืขืจืก.

ื”ื•ื™ืคึผื˜ ื™ืžืคึผืจื•ื•ื•ืžืึทื ืฅ:

  • ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืึธื‘ื™ืขืงื˜ื™ื•ื• C ("OBJC") ืื•ืŸ ืึธื‘ื™ืขืงื˜ื™ื•ื• ืฉืคึผืจืึทื›ืŸ
    C++ ("OBJCXX"), ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืขื ื™ื™ื‘ืึทืœื“ ื“ื•ืจืš ื“ื™ ืคึผืจื•ื™ืขืงื˜ () ืื•ืŸ enable_language () ืงืึทืžืึทื ื“ื–, ื ืึธืš ื•ื•ืึธืก ื“ื™ ืงืึธื“ ืื™ืŸ ื“ื™ ".ื" ".ืžื" ื˜ืขืงืขืก ื•ื•ืขื˜ ืฆื•ื ื•ื™ืคืฉื˜ืขืœื  ื–ื™ืš ื•ื•ื™ ืึธื‘ื™ืขืงื˜ื™ื•ื• C ืื•ืŸ ืึธื‘ื™ืขืงื˜ื™ื•ื• C ++ ืงืึธื“, ืืœื ื•ื•ื™ ื•ื•ื™ ื•ื•ื™. C ++, ื•ื•ื™ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืคืจื™ืขืจ;

  • ืฆื•ื’ืขื’ืขื‘ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื“ื™ ืงืœืึทื ื’ ืงืึทืžืคึผื™ื™ืœืขืจ ืื•ื™ืฃ ื“ื™ ืกืึธืœืึทืจื™ืก ืคึผืœืึทื˜ืคืึธืจืžืข;
  • ืฆื•ื’ืขื’ืขื‘ืŸ ื ื™ื™ึท ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืึธืคึผืฆื™ืขืก: "ืงืžืึทืงืข -E ืืžืช|ืคืึทืœืฉ" ืฆื• ื“ืจื•ืงืŸ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืงืึธื•ื“ื– 0 ืื•ืŸ 1; "cmake --trace-redirect=" ืฆื• ืจื™ื“ืขืจืขืงื˜ ืฉืคึผื•ืจ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืฆื• ืึท ื˜ืขืงืข ืึทื ืฉื˜ืึธื˜
    "ืกื˜ื“ืขืจืจ"; ื“ื™ "cmake --loglevel" ื‘ืึทืคึฟืขืœ ืื™ื– ืจื™ื ื™ื™ืžื“ ืฆื• "--log-level" ืฆื• ื‘ืจืขื ื’ืขืŸ ืขืก ืื™ืŸ ืฉื•ืจื” ืžื™ื˜ ื“ื™ ื ืขืžืขืŸ ืคื•ืŸ ื“ื™ ืื ื“ืขืจืข ืงืึทืžืึทื ื“ื–;

  • ืฆื•ื’ืขื’ืขื‘ืŸ ื“ื™ "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", "CMAKE_FIND_USE_CMAKE_PATH ืื•ืŸ IST" ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ื‘ืึทื–ืข ื–ื•ื›ืŸ ืคึผืึทื˜ืก RY";

  • ืฆื•ื’ืขืœื™ื™ื’ื˜ ื“ื™ "ื˜ืขืงืข (GET_RUNTIME_DEPENDENCIES)" ืžืึธื“ืข ืฆื• ื“ื™ "ื˜ืขืงืข ()" ื‘ืึทืคึฟืขืœ, ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืจืขืงื•ืจืกื™ื•ื•ืขืœื™ ืฆื•ืจื™ืงืงืจื™ื’ืŸ ื“ื™ ืจืฉื™ืžื” ืคื•ืŸ ืœื™ื™ื‘ืจืขืจื™ื– ื’ืขื ื™ืฆื˜ ื•ื•ืขืŸ ื“ื™ื ืึทืžื™ืงืึทืœืœื™ ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ ืึท ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ื˜ืขืงืข ืึธื“ืขืจ ื‘ื™ื‘ืœื™ืึธื˜ืขืง. ื“ืขืจ ืžืึธื“ืข ืจื™ืคึผืœื™ื™ืกื˜ ื“ื™ GetPrerequisites () ื‘ืึทืคึฟืขืœ, ื•ื•ืึธืก ืื™ื– ืื™ืฆื˜ ื“ื™ืคึผืจื™ืฉื™ื™ื™ื˜ื™ื“;
  • ื“ื™ "ctest (1)" ื‘ืึทืคึฟืขืœ ื™ืžืคึผืœืึทืžืึทื ืฅ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืกื™ืจื™ืึทืœื™ื–ืข ื˜ืขืกืฅ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ืจืขืกื•ืจืกืŸ ืคืืจืœืื ื’ื˜ ืคึฟืึทืจ ื™ืขื“ืขืจ ืคึผืจืึธื‘ืข;
  • ื“ื™ ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง "CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY" ืื™ื– ื“ื™ืคึผืจื™ืฉื™ื™ื™ื˜ื™ื“ ืื•ืŸ ื–ืึธืœ ื–ื™ื™ืŸ ืจื™ืคึผืœื™ื™ืกื˜ ื“ื•ืจืš "CMAKE_FIND_USE_PACKAGE_REGISTRY";
  • ื™ืžืคึผืจื•ื•ื•ื“ ืึทื™ืงืก ืคึผืœืึทื˜ืคืึธืจืžืข ืฉื˜ื™ืฆืŸ. ื•ื•ืขืŸ ื ื™ืฆืŸ ื“ื™ "ENABLE_EXPORTS" ืคืึทืจืžืึธื’, ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ื“ื™ ืขืงืกืขืงื•ื˜ืึทื‘ืœืข ื˜ืขืงืข, ืึท ืึทืจื™ื™ึทื ืคื™ืจ ื˜ืขืงืข ืคึฟืึทืจ ื“ื™ ืœื™ื ืงืขืจ ืื™ื– ืื™ืฆื˜ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“, ื’ืขืจืื˜ืขื•ื•ืขื˜ ืžื™ื˜ ื“ื™ ".imp" ื’ืขืฉืคึผืจื™ื™ื˜. ืื™ืŸ ืคึผืœื•ื’ื™ื ืก ื‘ืืฉืืคืŸ ื“ื•ืจืš ืจื•ืคืŸ "ืึทื“ื“_ืœื™ื‘ืจืึทืจื™ ()" ืžื™ื˜ ื“ื™ "ืžืึธื“ื•ืœ" ืึธืคึผืฆื™ืข, ื“ื™ ื˜ืขืงืข ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื•ื•ืขืŸ ืื™ืจ ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ ื ื™ืฆืŸ ื“ื™ ื‘ืึทืคึฟืขืœ "target_link_libraries ()". ืจื•ื ื˜ื™ืžืข ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ ืื•ื™ืฃ AIX ืื™ื– ืคืึทืจืงืจื™ืคึผืœื˜ ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ ื•ื•ื™ื™ึทืœ CMake ืื™ืฆื˜ ื’ื™ื˜ ืึทืœืข ื“ื™ ื ื™ื™ื˜ื™ืง ืกื™ืžื‘ืึธืœ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืคึฟืึทืจ ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ ืื™ืŸ ืžืึทืกืข ืฆื™ื™ื˜. ืฆื• ื ื•ืฆืŸ ืจื•ื ื˜ื™ืžืข ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ ืคื•ืŸ ื“ื™ื ืึทืžื™ืฉ ืœื™ื™ื‘ืจืขืจื™ื– ืึธื“ืขืจ ืœืึธื•ื“ืึทื‘ืœืข ืžืึทื“ื–ืฉื•ืœื–, ืื™ืจ ืžื•ื–ืŸ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ืึธืคึผืฆื™ืขืก "-Wl, -G" ืื™ืŸ ื“ื™ ืจืฉื™ืžื•ืช ืคื•ืŸ ืœื™ื ืงืขืจ ืกื˜ืึทืจื˜ืึทืคึผ ืคืœืึทื’ืก, ื“ื™ืคื™ื™ื ื“ ื“ื•ืจืš ื“ื™ ื•ื•ืขืจื™ืึทื‘ืึทืœื– "CMAKE_SHARED_LINKER_FLAGS" ืื•ืŸ "CMAKE_MODULE_LINKER_FLAGS".

ืžืงื•ืจ: opennet.ru

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’