如何将列表变量传递给另一个CMake调用?
在我的CMake脚本中,我使用如何将列表变量传递给另一个CMake调用?,cmake,Cmake,在我的CMake脚本中,我使用exec\u程序(${CMake\u COMMAND}…)运行其他CMake实例。我想使父环境的${CMAKE\u MODULES\u PATH}可供子环境使用。因此,我尝试将变量作为参数传递: exec_program(${CMAKE_COMMAND} ... ARGS ... -DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH} ...) 这弄乱了其他参数,我得到一个CMake错误:源目录似乎不包含CMakeLists.tx
exec\u程序(${CMake\u COMMAND}…)
运行其他CMake实例。我想使父环境的${CMAKE\u MODULES\u PATH}
可供子环境使用。因此,我尝试将变量作为参数传递:
exec_program(${CMAKE_COMMAND} ... ARGS ...
-DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH} ...)
这弄乱了其他参数,我得到一个CMake错误:源目录似乎不包含CMakeLists.txt。
。因此,我尝试转义变量:
exec_program(${CMAKE_COMMAND} ... ARGS ...
-DCMAKE_MODULE_PATH="${CMAKE_MODULE_PATH}" ...)
当我在子环境中打印${CMAKE_MODULE_PATH}
表单时,所有路径都会被打印出来,每个路径之间用空格隔开。但是,CMake在这些路径中找不到脚本。我猜这与作为字符串传递的列表有关,而不是半彩色分隔的列表
如何将包含字符串列表的CMake变量传递给另一个CMake命令
在我的CMake脚本中,我使用exec_程序(${CMake_COMMAND}…)运行其他CMake实例
根据此命令,不推荐使用以下命令:
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
谢谢,我也知道了。但是,如果我想传递一个存储在变量中的列表,而不是一些硬编码的项目,该怎么办?谢谢,这就是我想要的。似乎较新的
execute\u process()
处理问题的能力更强。