CMAKE_CACHE_ARGS option of ExternalProject_Add ignores LIST_SEPARATOR
Minimal example:
MainProject/CMakeLists.txt
:
cmake_minimum_required (VERSION 3.8 FATAL_ERROR)
project(MainProject)
include(ExternalProject)
ExternalProject_Add(SubProject
LIST_SEPARATOR ^^
SOURCE_DIR ${CMAKE_SOURCE_DIR}/SubProject
CMAKE_ARGS -DFOO_LIST:STRING=one^^two^^three
CMAKE_CACHE_ARGS -DFOO_LIST_CACHE:STRING=one^^two^^three
INSTALL_COMMAND ""
)
MainProject/SubProject/CMakeLists.txt
:
cmake_minimum_required (VERSION 3.8 FATAL_ERROR)
project(SubProject)
Then:
$ cmake -GNinja path/to/MainProject
$ ninja
$ grep -r FOO_LIST
SubProject-prefix/src/SubProject-build/CMakeCache.txt:FOO_LIST:STRING=one;two;three
SubProject-prefix/src/SubProject-build/CMakeCache.txt:FOO_LIST_CACHE:STRING=one^^two^^three
SubProject-prefix/tmp/SubProject-cache-Debug.cmake:set(FOO_LIST_CACHE "one^^two^^three" CACHE STRING "Initial cache" FORCE)
SubProject-prefix/tmp/SubProject-cfgcmd.txt:cmd='C:/genshi-env/Library/bin/cmake.exe;-DFOO_LIST:STRING=one^^two^^three;-C<TMP_DIR>/SubProject-cache-$<CONFIG>.cmake;-GNinja;<SOURCE_DIR><SOURCE_SUBDIR>'
Edited by Taylor Braun-Jones