CMakeLists - add_definition добавляет двойные кавычки вокруг переменной - PullRequest
1 голос
/ 11 октября 2019

Я пытаюсь передать определение во флаги компилятора в моем проекте C ++, настроенном с CMake, как показано ниже, как предложено в посте здесь :

execute_process(COMMAND git describe --abbrev=4 --dirty --always --tags 
OUTPUT_VARIABLE GIT_VERSION)

add_definitions(-DVERSION="\\"${GIT_VERSION}\\"")

I 'Я вижу ошибку лексизма. Как добавить кавычки вокруг переменной для определений компилятора?

Мой желаемый вывод -

-DVERSION="v1.0"

1 Ответ

1 голос
/ 11 октября 2019

То, что вы ищете, это escape-символ CMake \, который будет в паре с другим символом. Из CMake escape-последовательности документация:

A \, за которой следует один из ()#" \#@^, просто кодирует буквенный символ, не интерпретируя его как синтаксис.

Вы не указали ожидаемый результат, но вот несколько вариантов. Итак, если вы просто хотите поместить двойные кавычки вокруг переменной GIT_VERSION, попробуйте это (как предложено @GAVD):

# Yields -DVERSION="2.23.0"
add_definitions(-DVERSION=\"${GIT_VERSION}\")

Вам даже не нужны экранирующие символы для одного наборакавычки в add_definitions():

# Yields -DVERSION="2.23.0"
add_definitions(-DVERSION="${GIT_VERSION}")

Если вы хотите добавить два набора двойных кавычек вокруг переменной, попробуйте следующее:

# Yields -DVERSION=""2.23.0""
add_definitions(-DVERSION="\"${GIT_VERSION}"\")

Если вы пытаетесь получить формат, показанный в вашей связанной записи , попробуйте это:

# Yields -DVERSION="\"2.23.0"\"
add_definitions(-DVERSION="\\\"${GIT_VERSION}"\\\")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...