c++ - 如何访问 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"
解决方案
参数-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
推荐阅读
- docker - 使用 docker-compose 运行分布式气流架构时如何将新用户添加到 docker 映像
- spring - Hawtio到底是什么?
- elasticsearch - 弹性搜索客户端 API
- vmware - 处理器不支持 XSAVE。此虚拟机无法开机
- visual-studio - 使用 C++ 的 Visual Studio 2019 已安装,但 CMake 找不到
- jsf - 下载后无法更新组件。回答 15745235 不起作用
- image - 对于像 SMOT 这样的对象跟踪算法,什么是好的嵌入?
- git - 克隆后git-tfs丢失文件
- arrays - 如何从MongoDB中的数组中添加索引号
- java - 单击加载更多潜在客户会导致错误指出该元素不再可见