Встановлення вимоги до мінімальної версії наявної системи CMake.

Сигнатура і опис

cmake_minimum_required(VERSION <min>[...<policy_max>] [FATAL_ERROR])

Нововведення у версії 3.12: необов’язковий параметр <policy_max>.

Встановлює вимогу мінімальної версії системи CMake для поточного дерева директорій вихідного джерельного коду проекту. Також оновлює налаштування політик як описано далі у документі.

Параметри <min> і необов’язковий <policy_max> кожен являє собою CMake версію у формі <головна версія>.<другорядна версія>[.<версія патчу>[.<версія варіації>]] і вказані три крапки "..." являються обов’язковим літералом, який розділяє дві версії.

Якщо запущена версія CMake являється нижчою ніж вказана у параметрі <min> для мінімальної версії, система збірки припинить обробляти проект і згенерує відповідне повідомлення про помилку. Необов’язковий параметр версії <policy_max>, якщо вказаний, повинен бути не нижче вказаної <min> версії і впливає на поведінку як описано в документі Policy Settings. Якщо запущена версія системи CMake являється старішою за 3.12, додаткові літерал крапок ... буде розпізнаний системою як сепаратор компонентів версії, що призведе до ігнорування ...<max> частини команди і зарезервує поведінку CMake до версії 3.12 яка вказана у значенні <min>.

Дана команда встановить значення змінної CMAKE_MINIMUM_REQUIRED_VERSION у <min>.

Параметр FATAL_ERROR приймається, однак ігнорується системою CMake версії 2.6 і вище. Цей параметр повинен вказуватись отож CMake версії 2.4 і старшої припинить обробку проекту замість того щоб просто згенерувати відповідне попередження.

Зверніть увагу. Викликайте команду cmake_minimum_required() на початку файлу CMakeLists.txt найвищого рівня в дереві проекту навіть перед викликом команди project(). Дуже важливо встановити версію і політику налаштувань перед викликом будь-яких інших команд на поведінку яких вони можуть вплинути. Перегляньте також політику https://cmake.org/cmake/help/latest/policy/CMP0000.html#policy:CMP0000.

Виклик cmake_minimum_required() всередині команди function() обмежує деякі ефекти до тіла функції під час її виклику. Наприклад, змінна CMAKE_MINIMUM_REQUIRED_VERSION не буде встановлена у заданому тілі функції. Функції не впроваджують власні політики у своєму тілі, отож політика налаштувань коду, який викликає функцію з даною командою буде модифікованою (описано далі в документі). Через дане компонування команд і ефектів які впливають і не впливають на тіло коду який викликає функцію з командою cmake_minimum_required(), виклик команди cmake_minimum_required() всередині користувацької функції, в загальному, не рекомендується.

Налаштування політик

Команда cmake_minimum_required(VERSION) опосередковано викликає команду cmake_policy(VERSION) щоб вказати що поточне дерево вихідного джерельного коду написана з оглядом на даний проміжок версії системи CMake. Усі політики відомі для запущеної версії CMake і вказаних у значенні версії параметру <min><max>, якщо вказано) або пізніших будуть використовувати нову поведінку. Усі політики впроваджені у пізніших версіях системи збірки будуть вимкненими. Це ефективно запитує поведінку яка бажана для даної версії CMake і вказує новішим версіям CMake попереджати про їхні нові політики.

Коли версія вказана у параметрі <min> являється вищою за 2.4 команда опосередковано викликає

cmake_policy(VERSION <min>[...<max>])

Що вказує системі CMake увімкнути політики базуючись на проміжку вказаних версій. Коли версія вказана у параметрі <min> являє собою значення 2.4 або нижче, команда опосередковано викликає

cmake_policy(VERSION 2.4[...<max>])

Що в свою чергу вмикає можливості системи CMake 2.4 і нижче.

Змінено у версії 3.27: Сумісність з версіями системи CMake старшими за 3.5 є застарілою. Виклики команди cmake_minimum_required(VERSION) або cmake_policy(VERSION) які вказують версії нижчі за 3.5 у якості версії політик (необов’язково також за допомогою параметра ...<max>) спричинить до генерації попередження про застарілість у CMake версії 3.27 і вище.

Зміни у версії 3.19: Сумісність з версіями системи CMake старішими ніж 2.8.12 є застарілим. Виклики команд cmake_minimum_required(VERSION) або cmake_policy(VERSION) які вказують версії нижчі за 2.8.12 у якості версій політик (також за допомогою необов’язкового параметру ...<max>) спричинить генерування попередження про застарілість у CMake версії 3.19 і вище.

Перегляньте також

cmake_policy()

Приклад

Щоб переглянути приклад використання команди cmake_minimum_required() потрібно перейти за адресою https://github.com/yuriysydor1991/kytok.org.ua-CMake-intro-article-resources/blob/main/CMakeLists.txt#L1 за якою міститься файл CMakeLists.txt демонстративного проекту який використовувався для статті http://www.kytok.org.ua/post/cmake-lehkyj-start

Оригінал

Щоб переглянути оригінал специфікації команди cmake_minimum_required потрібно перейти за адресою https://cmake.org/cmake/help/latest/command/cmake_minimum_required.html