CMake: получить переменную окружения с экранированными символами - PullRequest
2 голосов
/ 30 сентября 2019

Предположим, кто-то хочет использовать переменную окружения MY_VAR в CMake. Это может быть достигнуто простым использованием set(myVar $ENV{MY_VAR}).

Но что, если MY_VAR содержит управляющие символы, скажем MY_VAR="/path/with/escaped\ chars"? CMake обрабатывает \ с последующим пробелом как два отдельных символа вместо одного символа (пробел). Другими словами,

# CMakeLists.txt

set(myVar $ENV{MY_VAR})
message(${myVar})

печатает /path/with/escaped\ chars, а не /path/with/escaped chars. Как заставить CMake распознавать escape-символы в переменных окружения? Есть ли лучшие рекомендации по этой проблеме? Я использую CMake на macOS, но надеюсь, что существует независимое от платформы решение ...

Контекст: Cmake используется длянастроить C++ рамки перед установкой. MY_VAR содержит путь, предоставленный пользователем, который используется (a) в Makefile для установки CMAKE_PREFIX_PATH и (b) в Cmake на configure_file файл конфигурации для сценария Python, который требуется платформой.

...