首页 > 解决方案 > 如何访问 conanfile.py 中的设置环境变量

问题描述

当我conan create -e VAR=A . demo/testing用来设置环境时。变量VAR=A,

如何访问conanfile.py. 该变量VAR不在os.environ字典内。

我不能使用export VAR=A.

import os
import sys
from conans import ConanFile


class BaseLibrary(ConanFile):
  name = "base-library"

  def set_version(self):
    print(os.environ) # does not work... why??
    self.version = "1.0.0"

标签: c++conan

解决方案


参数-e是将在包构建期间设置的环境变量,这意味着传递给编译器。您可以访问它,但build(self)在您的食谱中的方法下。它在创建命令参考中进行了解释。因此,您无法在构建之前访问它。

由于您想在构建之前获取环境变量,因此正确的用法是使用tools.get_env,但您仍然不应该使用-e,它不起作用。相反,您应该在命令之前作为常规环境变量传递:

PKG_VERSION=0.1.0 conan create . user/testing
from conans import ConanFile, tools

class BaseLibrary(ConanFile):
  name = "base-library"

  def set_version(self):
    self.version = tools.get_env("PKG_VERSION")

不过,您可以通过参数传递包版本,您不需要使用 env vars(也许您正在使用 CI 服务并且不想更改配置文件)。

conan create . base-library/0.1.0@user/testing

推荐阅读