CMake. Вычисление содержимого переменных, содержащих пробелы и точки с запятой - C++ IDE - Ответ 16869726

В своей книге "Professional CMake" Крейг Скотт приводит следуйщий пример передачи аргументов в функцию:

someCommand(a "b b" c)
someCommand(a "b;b" c)
someCommand(a;"b;b";c)

, утверждая, что все три вышеуказанных вызова приводят к передаче в команду трёх аргументов. Первый вызов передает

b b

в качестве второго аргумента, два других вызова передают

b;b

в качестве второго аргумента. Но на поверку оказалось, что третий вызов передаёт не три аргумента, а четыре:

a

,

"b

,

b"

и

c

. Может ли кто-нибудь объяснить что произошло на этом шаге и почему точка с запятой, которая находится в парных кавычках, всё же интерпретируется, как разделитель, а не как обычный символ строки? В том, что это действительно так, сомнений никаких нет. Прикладываю скриншот CMake Debugger'а.

Вернуться к обсуждению:

CMake. Вычисление содержимого переменных, содержащих пробелы и точки с запятой C++ IDE