在我的CMake脚本中,我使用${CMAKE_MODULES_PATH}
运行其他CMake实例。我想让子环境可以使用父环境的exec_program(${CMAKE_COMMAND} ... ARGS ...
-DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH} ...)
。因此,我试图将变量作为参数传递:
CMake Error: The source directory <first-module-path> does not appear to contain CMakeLists.txt.
这弄乱了其他参数,我得到了exec_program(${CMAKE_COMMAND} ... ARGS ...
-DCMAKE_MODULE_PATH="${CMAKE_MODULE_PATH}" ...)
。因此,我尝试转义变量:
${CMAKE_MODULE_PATH}
当我在子环境中打印currentMonths
表单时,将打印所有路径,每个路径用空格分隔。但是,CMake在这些路径中找不到脚本。我想这与列表传递为字符串而不是半色分隔列表有关。
如何将保存字符串列表的CMake变量传递给另一个CMake命令?
答案 0 :(得分:1)
在我的CMake脚本中,我使用exec_program运行其他CMake实例($ {CMAKE_COMMAND} ...)
根据documentation,不推荐使用此命令:
Deprecated. Use the execute_process() command instead.
列表变量示例CMakeLists.txt:
execute_process(
COMMAND "${CMAKE_COMMAND}" "-DVAR=A;B;C" -P script.cmake
OUTPUT_VARIABLE output
)
script.cmake:
message("VAR: ${VAR}")
foreach(x ${VAR})
message("x: ${x}")
endforeach()
输出:
VAR: A;B;C
x: A
x: B
x: C