VirtualBuildEnv

VirtualBuildEnv 是一个生成器,它生成一个 conanbuildenv .bat、.ps1 或 .sh 脚本,其中包含构建时上下文的环境变量

  • 来自“构建”上下文中直接 tool_requiresself.buildenv_info

  • 来自这些 tool_requires 的传递依赖项的 self.runenv_info

它可以在 conanfile 中按名称使用

conanfile.py
class Pkg(ConanFile):
    generators = "VirtualBuildEnv"
conanfile.txt
[generators]
VirtualBuildEnv

它也可以在 conanfile 的 generate() 方法中完全实例化

conanfile.py
from conan import ConanFile
from conan.tools.env import VirtualBuildEnv

class Pkg(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    requires = "zlib/1.2.11", "bzip2/1.0.8"

    def generate(self):
        ms = VirtualBuildEnv(self)
        ms.generate()

生成的文件

此生成器(例如调用 conan install --tool-require=cmake/3.20.0@ -g VirtualBuildEnv)将创建以下文件

  • conanbuildenv-release-x86_64.(bat|ps1|sh): 此文件包含环境变量的实际定义,例如 PATH、LD_LIBRARY_PATH 等,以及依赖项 buildenv_info 中定义的任何其他变量,这些变量对应于 build 上下文和当前安装的配置。如果使用其他设置重复调用,将创建不同的文件。执行或源文件后,将生成新的停用脚本,捕获当前环境,以便在需要时可以恢复环境。该文件也将按照当前活动配置命名,例如 deactivate_conanbuildenv-release-x86_64.bat

  • conanbuild.(bat|ps1|sh): 如果生成过程中有多个工具创建文件,则累积对一个或多个其他脚本的调用,以便为所有工具提供一个方便的文件。这仅调用最新的特定配置,也就是说,如果首先为 Release 构建类型调用 conan install,然后为 Debug 构建类型调用,则 conanbuild.(bat|ps1|sh) 脚本将调用 Debug 构建类型。

  • deactivate_conanbuild.(bat|ps1|sh): 累积在上述 conanbuild.(bat|ps1|sh) 中定义的停用调用。只有在首先调用累积的激活后,才能调用此文件。

注意

要创建 PowerShell 所需的 .ps1 文件,您需要使用 PowerShell 可执行文件的值(例如,powershell.exepwsh)设置 tools.env.virtualenv:powershell 配置。请注意,从 Conan 2.11.0 开始,将其设置为 TrueFalse 已被弃用,不应再使用。

注意

可以通过将 --envs-generation=false 传递给 conan install 命令来禁用为消费者自动生成这些文件。 此功能是实验性的,可能会发生更改,如果禁用此文件,可能会导致意外的构建错误,例如,如果使用了 tool_requires。如果禁用生成,请确保不需要它们。

参考

class VirtualBuildEnv(conanfile, auto_generate=False)

计算构建时上下文的环境变量,并生成 conanbuildenv .bat 或 .sh 脚本

environment()

返回一个 Environment 对象,其中包含构建上下文的环境变量。

返回值:

一个 Environment 对象实例,其中包含获取的变量。

vars(scope='build')
参数:

scope – 要使用的作用域。

返回值:

一个 EnvVars 实例,其中包含计算出的环境变量。

generate(scope='build')

生成启动器脚本,激活构建上下文的变量。

参数:

scope – 要使用的作用域。