Обратная косая черта в определении препроцессора в NMake .vcxproj - PullRequest
0 голосов
/ 22 декабря 2018

В проекте Visual Studio C ++ на основе NMake (.vcxproj) - автоматически создан для проекта LibreOffice для интеграции с IDE, мне нужно задать определение препроцессора (SRCDIR), которое представляет собой строку, содержащую двойные кавычки ".В .vcxproj это делается так:

<NMakePreprocessorDefinitions>_WIN32_WINNT=0x0601;SRCDIR=&quot;\&quot;C:/lo/src/core\&quot;&quot;;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>

, так что внутренние двойные кавычки правильно экранируются для использования в качестве строкового литерала C.

Но при попытке использовать SRCDIR вкод C ++, как в

const size_t nStrLen(std::strlen(SRCDIR));

Я вижу эту проблему в IntelliSense:

#define SRCDIR "\\"C:/lo/src/core\\""
Expands to: "\\"C:/lo/src/core\\""

user-defined literal operator not found

Таким образом, IntelliSense явно экранирует обратную косую черту, разбивая строку.

Я должен упомянуть, что проект VS не используется для сборки модуля (используется консольная марка), поэтому я не вижу, не повреждена ли не только IntelliSense, но и сборка на основе VS.Но вопрос в том, как правильно настроить определение препроцессора следующим образом?

...