我的项目包含一个自定义目标,它通过.cmake
脚本生成一些输出。它看起来像这样:
add_custom_target(TargetName
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/script.cmake
BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/generated/output
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
VERBATIM
)
但现在我想在脚本中设置缓存变量。我试着这样做:
message("MY_CACHE_VARIABLE = ${MY_CACHE_VARIABLE}")
set(MY_CACHE_VARIABLE "VALUE" CACHE INTERNAL "")
我遇到了缓存变量没有保存的问题。它总是给我打印空输出:
MY_CACHE_VARIABLE =
我已经尝试将工作目录设置为CMAKE_BINARY_DIR
,或传递CMAKE_BINARY_DIR
cmake 命令的最后一个参数,或传递-B ${CMAKE_BINARY_DIR}
或-C ${CMAKE_BINARY_DIR}/CMakeCache.txt
作为参数等。这些都不起作用。
那么有没有办法在 CMake 子进程中重用现有缓存,或者我应该在脚本中编写自己的缓存?