Spec-Zone.ru › CMake

CMP0174

Добавлено в версии 3.31.

cmake_parse_arguments(PARSE_ARGV) определяет переменную со значением пустой строки после ключевого слова с одним значением.

Одна из основных причин использовать форму PARSE_ARGV команды cmake_parse_arguments() — более надёжная обработка особых случаев, связанных с пустыми значениями. Форма без PARSE_ARGV не сохраняет пустые аргументы, а форма PARSE_ARGV сохраняет. Для каждого заданного ключевого слова с одним значением следует определять переменную, если это ключевое слово присутствует, даже если за ним следует пустая строка.

До CMake 3.31 переменная не определялась, если значение, указанное после ключевого слова с одним значением, было пустой строкой. Это означало, что код не мог отличить отсутствие ключевого слова от случая, когда оно указано с пустым значением, кроме как перебрав все аргументы и проверив наличие ключевого слова.

При поведении OLD этой политики cmake_parse_arguments(PARSE_ARGV) не определяет переменную для ключевого слова с одним значением, за которым следует пустая строка или вообще не следует значение.

При поведении NEW cmake_parse_arguments(PARSE_ARGV) всегда определяет переменную для каждого ключевого слова, указанного в аргументах, в том числе для ключевого слова с одним значением, значение которого является пустой строкой или отсутствует. При поведении NEW код может надёжно проверить, было ли задано ключевое слово с одним значением, используя только if(DEFINED <prefix>_<keyword>).

Эта политика была введена в CMake версии 3.31. Её можно задать с помощью cmake_policy() или cmake_minimum_required(). Если она не задана, CMake выдаёт предупреждение и использует поведение OLD.

Примечание

Поведение OLD политики по определению считается устаревшим и может быть удалено в будущей версии CMake.

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/policy/CMP0174.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API