【问题标题】:CMake Environmental variablesCMake 环境变量
【发布时间】:2020-06-08 21:15:24
【问题描述】:

在使用 CMake 并阅读大量其他 CMakeLists.txt 文件时,我注意到 set(ENV{variable_name} value) 经常被使用。但是,例如这里https://cliutils.gitlab.io/modern-cmake/chapters/basics/variables.html作者提到应该避免这些变量,无需进一步解释。 CMake 文档站:

此命令只影响当前的 CMake 进程,不影响调用 CMake 的进程,也不影响整个系统环境,也不影响后续构建或测试进程的环境。

我的问题是,在 CMakeLists.txt 中使用环境变量真的有那么糟糕吗?预计这种用法会有哪些陷阱?

【问题讨论】:

    标签: cmake environment-variables


    【解决方案1】:

    CMakeLists.txt中使用环境变量没什么不好。

    例如,许多FindXXX.cmake 脚本实际上使用环境变量。

    这样使用会出现什么陷阱?

    1. 从环境变量中读取一个路径后,转换它为cmake-style路径(例如file(TO_CMAKE_PATH))在 CMake 命令中访问此路径的文件之前。否则你可能会在 Windows 上遇到问题,路径分隔符 ("\") 与 CMake 的分隔符 ("/") 不同。

    2. 因为设置环境变量只影响配置阶段,这是很少需要:最好改用CMake变量。

      唯一重要的例外:工具链文件可以在配置过程中多次执行。并且设置环境变量是存储值的唯一方法,该值是在第一次工具链调用时计算出来的,以便在以后的调用中可用。 (在这种情况下,即使 CACHE 变量也不起作用)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-17
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      相关资源
      最近更新 更多