Я пытаюсь передать строковый литерал через флаг /D
компилятору через скрипт nmake в MS Visual Studio 2013+.Базовый шаблон:
CPPFLAGS=/DSOME_STRING_VAR="asdf"
main.exe: main.cpp
$(CPP) $(CPPFLAGS) # ...
А внутри main.cpp я хотел бы иметь возможность сделать что-то вроде:
const char *some_string_var = SOME_STRING_VAR;
Пока что каждый вариант этого я пробую результатыв чем-то вроде:
main.cpp(271) : error C2065: 'asdf' : undeclared identifier
Я пробовал одну двойную кавычку "
, убегая с помощью каретки ^"
, многократно убегая из каретки ^^^"
и удваивая двойную квоту ""
.Насколько я могу судить, это все экранирующие синтаксисы для пакетных сценариев, но они не работают в nmake.
Есть ли способ избежать двойных кавычек в nmake, чтобы они правильно выполнялисьпередается в команду компиляции?
Для бонусных баллов выполняется ли команда nmake оболочкой, такой как пакет?То есть мне нужно беспокоиться об одном или двух уровнях побега здесь?
Я был бы рад поддержать Visual Studio 2015+, если бы в более новой версии было доступно более чистое решение.