Какой смысл использовать пустую строку для установки переменной кэша в CMake? - PullRequest
2 голосов
/ 22 января 2020

Я видел разные способы установки / использования переменных Cache в Cmake. Что такое стандарт?

Какой смысл устанавливать пустую строку ("") для переменной кэша?

Пример

set(NVTX_ROOT_DIR "" CACHE PATH "Folder contains NVIDIA NVTX")

1 Ответ

2 голосов
/ 23 января 2020

Какой смысл устанавливать пустую строку ("") для переменной кэша?

Это не просто установка значения для переменной CACHE.

Поток команд set(CACHE) обычно выполняет две вещи :

  1. Объявляет параметр (назначает описание и возможно тип)
  2. Устанавливает для параметра значение по умолчанию . (То есть, если параметр уже установлен, его значение не изменяется).

Пустое значение для переменной CACHE может означать, что параметр , обозначенный этой переменной, равен не установлено . В зависимости от проекта, в котором он используется, это можно интерпретировать как:

  • Не использовать функциональность, описанную параметром.
  • Выдать ошибку, сообщив, что параметр должен быть установлен пользователем .

В проверке кода CMake параметр может быть реализован с помощью простого if(VAR):

if(NVTX_ROOT_DIR)
  # The parameter is set
else()
  # The parameter is not set
endif()

Хотя if(NVTX_ROOT_DIR) равно false, даже если переменная is не установлено , объявление параметра невозможно без установки его значения. Таким образом, пустая строка в качестве значения по умолчанию является логичным выбором для возможности использовать простой if(NVTX_ROOT_DIR) для проверки отсутствия установки параметра.

...