CMake 环境变量

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

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

我的问题是,在CMakeLists.txt中使用环境变量是否真的是一个不好的实践?这种使用会有什么陷阱?
1个回答

5

CMakeLists.txt 中使用环境变量是没有问题的。

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

使用这种方法有什么注意事项?

  1. 从环境变量中读取路径后,在 CMake 命令中访问该路径之前,将其转换CMake 风格的路径(例如使用file(TO_CMAKE_PATH)),否则在 Windows 上可能会出现问题,因为路径分隔符 ("\") 与 CMake 的不同 ("/")。

  2. 由于设置环境变量仅影响配置阶段,因此这很少需要:最好使用 CMake 变量代替。

    唯一重要的例外情况是:工具链文件可能在配置期间执行多次。并且设置环境变量是存储在第一次工具链调用期间计算的值以在后续调用中使用的唯一方法。(即使缓存变量在这种情况下也无效)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接