CMake 3.15 เจฌเจฟเจฒเจก เจธเจฟเจธเจŸเจฎ เจฆเฉ€ เจฐเจฟเจฒเฉ€เจœเจผ

เจนเฉ‹เจ‡เจ† เจ‡เฉฑเจ• เจ•เจฐเจพเจธ-เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจ“เจชเจจ เจฌเจฟเจฒเจก เจธเจ•เฉเจฐเจฟเจชเจŸ เจœเจจเจฐเฉ‡เจŸเจฐ เจฆเฉ€ เจฐเจฟเจฒเฉ€เจœเจผ เจธเฉ€เจเจฎเจ•เฉ‡ 3.15., เจœเฉ‹ เจ†เจŸเฉ‹เจŸเฉ‚เจฒเจœเจผ เจฆเฉ‡ เจตเจฟเจ•เจฒเจช เจตเจœเฉ‹เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ KDE, LLVM/Clang, MySQL, MariaDB, ReactOS เจ…เจคเฉ‡ Blender เจตเจฐเจ—เฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจตเจฟเฉฑเจš เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค CMake เจ•เฉ‹เจก C++ เจตเจฟเฉฑเจš เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ BSD เจฒเจพเจ‡เจธเฉฐเจธ เจฆเฉ‡ เจ…เจงเฉ€เจจ เจตเฉฐเจกเจฟเจ† เจ—เจฟเจ† เจนเฉˆเฅค

CMake เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจธเจ•เฉเจฐเจฟเจชเจŸเจฟเฉฐเจ— เจญเจพเจธเจผเจพ, เจฎเฉŒเจกเจฟเจŠเจฒเจพเจ‚ เจฐเจพเจนเฉ€เจ‚ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจฃ เจฆเจพ เจ‡เฉฑเจ• เจธเจพเจงเจจ, เจ‡เฉฑเจ• เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจจเจฟเจฐเจญเจฐเจคเจพ (M4, เจชเจฐเจฒ เจœเจพเจ‚ เจชเจพเจˆเจฅเจจ เจฒเจˆ เจ•เฉ‹เจˆ เจฌเจพเจˆเจกเจฟเฉฐเจ— เจจเจนเฉ€เจ‚), เจ•เฉˆเจšเจฟเฉฐเจ— เจธเจนเจพเจ‡เจคเจพ, เจ•เจฐเจพเจธ-เจ•เฉฐเจชเจพเจˆเจฒเฉ‡เจธเจผเจจ เจฒเจˆ เจŸเฉ‚เจฒเจธ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€, เจฌเจฟเจฒเจก เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฒเจˆ เจชเฉเจฐเจธเจฟเฉฑเจง เจนเฉˆเฅค เจฌเจฟเจฒเจก เจธเจฟเจธเจŸเจฎเจพเจ‚ เจ…เจคเฉ‡ เจ•เฉฐเจชเจพเจˆเจฒเจฐเจพเจ‚ เจฆเฉ€ เจตเจฟเจธเจผเจพเจฒ เจธเจผเฉเจฐเฉ‡เจฃเฉ€ เจฒเจˆ เจซเจพเจˆเจฒเจพเจ‚, เจŸเฉˆเจธเจŸ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจ…เจคเฉ‡ เจฌเจฟเจฒเจกเจฟเฉฐเจ— เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ ctest เจ…เจคเฉ‡ cpack เจ‰เจชเจฏเฉ‹เจ—เจคเจพเจตเจพเจ‚, เจฌเจฟเจฒเจก เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฐเจŸเจฐเจเจ•เจŸเจฟเจต เจขเฉฐเจ— เจจเจพเจฒ เจธเฉˆเฉฑเจŸ เจ•เจฐเจจ เจฒเจˆ cmake-gui เจ‰เจชเจฏเฉ‹เจ—เจคเจพเฅค

เจฎเฉเฉฑเจ– เจธเฉเจงเจพเจฐ:

  • เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจญเจพเจธเจผเจพ เจธเจฎเจฐเจฅเจจ เจจเจฟเจจเจœเจพ-เจ…เจงเจพเจฐเจฟเจค เจฌเจฟเจฒเจก เจธเจ•เฉเจฐเจฟเจชเจŸ เจœเจจเจฐเฉ‡เจŸเจฐ เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจนเฉˆ เจธเจตเจฟเจซเจŸ, เจเจชเจฒ เจฆเฉเจ†เจฐเจพ เจตเจฟเจ•เจธเจค;
  • เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจฒเจˆ เจ•เจฒเฉˆเจ‚เจ— เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจฆเฉ‡ เจ‡เฉฑเจ• เจตเฉ‡เจฐเฉ€เจเจ‚เจŸ เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจœเฉ‹ MSVC ABI เจจเจพเจฒ เจฌเจฃเจฆเจพ เจนเฉˆ, เจชเจฐ GNU-เจธเจผเฉˆเจฒเฉ€ เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ;
  • MSVC ABI (MS เจตเจฟเจœเจผเฉ‚เจ…เจฒ เจธเจŸเฉ‚เจกเฉ€เจ“) เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡ เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจฆเฉเจ†เจฐเจพ เจตเจฐเจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจฐเจจเจŸเจพเจˆเจฎ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ เจฆเฉ€ เจšเฉ‹เจฃ เจ•เจฐเจจ เจฒเจˆ 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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹