Какой смысл устанавливать пустую строку ("") для переменной кэша?
Это не просто установка значения для переменной CACHE.
Поток команд set(CACHE)
обычно выполняет две вещи :
- Объявляет параметр (назначает описание и возможно тип)
- Устанавливает для параметра значение по умолчанию . (То есть, если параметр уже установлен, его значение не изменяется).
Пустое значение для переменной 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)
для проверки отсутствия установки параметра.