【发布时间】:2014-03-13 04:21:02
【问题描述】:
我想弄清楚如何有效地将所有 CMake 变量传递到 CMake 的另一个执行步骤。
get all the variables 有一种方法,但我希望有一个有效的选择,而不是循环遍历每个变量并将字符串与 set() 一起附加如下:
get_cmake_property(_variableNames VARIABLES)
foreach (_variableName ${_variableNames})
if(NOT ${_variablename} STREQUAL BASIS_PROPERTIES_ON_TESTS_RE)
set(ALL_VARIABLES_COMMAND_LINE "${ALL_VARIABLES_COMMAND_LINE} -D ${_variableName}=\"${${_variableName}}\"\n")
endif()
endforeach()
execute_process (
COMMAND "${CMAKE_COMMAND}" ${COMMON_ARGS}
-D "PROJECT_INCLUDE_DIRS=${INCLUDE_DIRS}"
-D "BINARY_INCLUDE_DIR=${BINARY_INCLUDE_DIR}"
-D "EXTENSIONS=${EXTENSIONS}"
${ALL_VARIABLES_COMMAND_LINE}
-D "CMAKE_FILE=${CMAKE_FILE}"
-P "${BASIS_MODULE_PATH}/ConfigureIncludeFiles.cmake"
RESULT_VARIABLE RT
)
该方法的问题是它会混淆转义字符,并且在某些情况下无法执行程序。
注意:我目前将所有变量写入磁盘并从那里重新加载它们,但该操作需要 1/2 秒。因为我需要为超过 100 个独立的包运行这个脚本,所以该技术的额外配置时间太长了。
【问题讨论】:
标签: variables cmake parameter-passing execution