目前,我正努力将一些环境变量“注入”到PlatformIO构建过程中。由于我的文档化堆栈,我在.env文件中管理根目录下的一些秘密。我的项目结构与此类似:
Project
|- .env
|- iot
|--- iot-project-1
|----- lib
|----- src
|------- main.cpp
|----- platformio.ini
|----- [...]现在,我希望使用main.cpp中的main.cpp文件中的环境变量。这是我想出来的,但并没有像预期的那样起作用:
.env
FOO=helloplatformio.ini
build_flags = '-DFOOOO=${sysenv.FOO}'main.cpp
#define XSTR(x) #x
#define STR(x) XSTR(x)
const char* fo123 = STR(FOOOO);
void setup() {
Serial.begin(115200);
Serial.println(fo123);
}有人知道我的案子可能有什么解决办法吗?
发布于 2021-03-22 15:21:24
您可以使用以下两种解决方案之一:
在这个博客帖子中描述的思想,但它不是使用.env文件
示例:
Project
|- .env
|- env-extra.py
|- platformio.ini
|- src
|--- main.cpp
|- lib.env
FOO=helloplatformio.ini
extra_scripts =
pre:env-extra.pymain.cpp
#define XSTR(x) #x
#define STR(x) XSTR(x)
const char* fo123 = STR(FOO);
void setup() {
Serial.begin(115200);
Serial.println(fo123);
}env-extra.py
from os.path import isfile
Import("env")
assert isfile(".env")
try:
f = open(".env", "r")
lines = f.readlines()
envs = []
for line in lines:
envs.append("-D{}".format(line.strip()))
env.Append(BUILD_FLAGS=envs)
except IOError:
print("File .env not accessible",)
finally:
f.close()脚本env-extra.py读取您的文件.env并附加BUILD_FLAGS
https://stackoverflow.com/questions/62314497
复制相似问题