CMake环境变量

问题描述 投票:0回答:1

[使用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个回答
3
投票

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

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

使用这种方法必须注意什么陷阱?

  1. 从环境变量中读取path之后,将其transform转换为cmake-style路径(例如,使用file(TO_CMAKE_PATH)),然后在CMake命令中访问该路径中的文件。否则,您可能会在Windows上遇到问题,该路径分隔符(“ \”)与CMake one(“ /”)不同。

  2. 因为setting环境变量仅在configuration阶段起作用,所以这是[[很少需要:最好使用CMake变量。

    唯一重要的例外:

    工具链文件

    可以在配置过程中多次执行。设置环境变量是存储值的唯一方法,该值是在第一次工具链调用中计算得出的,以便可以在以后的调用中使用。 (即使CACHE变量在这种情况下也不起作用)。
© www.soinside.com 2019 - 2024. All rights reserved.