К сожалению, списки внутри CMake - это просто строки, разделенные точкой с запятой. Если вы сделаете:
set(MyList
ABC
DEF;GHI
)
Вы определяете список из трех элементов. Если вы посмотрите содержимое:
message(${MyList})
message("${MyList}")
Вы получите ABCDEFGHI
и ABC;DEF;GHI
соответственно, поэтому невозможно узнать, сколько элементов вы действительно хотели бы иметь в любом случае. Большинство команд CMake, таких как add_executable
или target_compile_definitions
, интерпретируют переданные аргументы таким образом, и вы не сможете передавать им списки с элементами, содержащими точки с запятой.
Обратите внимание, что точки с запятой не удаляются при установке переменная в кавычках (см. пример выше), поэтому, если вы вызываете какую-то внешнюю команду, например скрипт powershell, тогда переменная PATH
должна быть передана правильно. Но тогда вы не будете использовать список для списка аргументов (поскольку элементы разделены точкой с запятой), а просто создадите собственную строку, разделенную пробелом.