【问题标题】:How to reference CMake variable in shell script如何在 shell 脚本中引用 CMake 变量
【发布时间】:2021-12-14 04:08:13
【问题描述】:

我使用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} 在脚本中时,我什么也得不到。

【问题讨论】:

  • 在 Make 文件中,将变量的值写入文件,然后在 shell 脚本中读取该文件。但是,在这种情况下,我会反过来考虑:在调用 cmake 之前在脚本中设置变量,并将其传递给 Makefile。那么就不需要临时文件了。

标签: bash shell cmake


【解决方案1】:

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 脚本是一种代码异味(妨碍可移植性,很奇怪而且可能没有必要)。

【讨论】:

  • 所以在构建目标之前需要对shell进行一些处理,如果不调用shell脚本,正确的方法是什么?
  • "需要使用 shell" -- 可以说,这种情况很少见。
猜你喜欢
  • 2018-08-06
  • 2019-07-06
  • 2022-01-18
  • 1970-01-01
相关资源
最近更新 更多