C++ 平台中外部环境变量的访问
我目前正努力将一些环境变量“注入”到PlatformIO构建过程中。由于我的停靠堆栈,我在.env文件的根目录下管理一些秘密。我的项目结构与此类似:C++ 平台中外部环境变量的访问,c++,environment-variables,platformio,C++,Environment Variables,Platformio,我目前正努力将一些环境变量“注入”到PlatformIO构建过程中。由于我的停靠堆栈,我在.env文件的根目录下管理一些秘密。我的项目结构与此类似: Project |- .env |- iot |--- iot-project-1 |----- lib |----- src |------- main.cpp |----- platformio.ini |----- [...] 现在我想使用main.cpp中.env文件中的环境变量。 这是我想到的,但没有达到预期效果: .env FOO=h
Project
|- .env
|- iot
|--- iot-project-1
|----- lib
|----- src
|------- main.cpp
|----- platformio.ini
|----- [...]
现在我想使用main.cpp中.env文件中的环境变量。
这是我想到的,但没有达到预期效果:
.env
FOO=hello
FOO=hello
platformio.ini
build_flags = '-DFOOOO=${sysenv.FOO}'
extra_scripts =
pre:env-extra.py
main.cpp
#define XSTR(x) #x
#define STR(x) XSTR(x)
const char* fo123 = STR(FOOOO);
void setup() {
Serial.begin(115200);
Serial.println(fo123);
}
#define XSTR(x) #x
#define STR(x) XSTR(x)
const char* fo123 = STR(FOO);
void setup() {
Serial.begin(115200);
Serial.println(fo123);
}
有人知道我的案例可能的解决方法吗?您可以使用以下两种解决方案之一:
.env
文件
Project
|- .env
|- env-extra.py
|- platformio.ini
|- src
|--- main.cpp
|- lib
.env
FOO=hello
FOO=hello
platformio.ini
build_flags = '-DFOOOO=${sysenv.FOO}'
extra_scripts =
pre:env-extra.py
main.cpp
#define XSTR(x) #x
#define STR(x) XSTR(x)
const char* fo123 = STR(FOOOO);
void setup() {
Serial.begin(115200);
Serial.println(fo123);
}
#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\u标志