如何在 shell 脚本中引用 CMake 变量

How to reference CMake variable in shell script

我使用 execute_process 到 运行 一个 shell 脚本,

set(CMAKE_C_FLAGS ...) # here ... means many options
execute_process(
    COMMAND ./my_script.sh)

my_script.sh中我想使用CMAKE_C_FLAGS的值怎么办? 当 echo ${CMAKE_C_FLAGS} 在脚本中时,我什么也得不到。

CMake 变量不是环境变量。

您可以像这样设置环境变量:

set(CMAKE_C_FLAGS ...)
set(ENV{CMAKE_C_FLAGS} "${CMAKE_C_FLAGS}")
execute_process(COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/my_script.sh")

请注意,这 在 CMake 配置步骤期间持续。这意味着它将适用于 execute_process,但不适用于 add_custom_command

另请注意,从 CMake 调用 shell 脚本会产生代码异味(妨碍可移植性,很奇怪,而且可能没有必要)。