Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 平台中外部环境变量的访问_C++_Environment Variables_Platformio - Fatal编程技术网

C++ 平台中外部环境变量的访问

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

我目前正努力将一些环境变量“注入”到PlatformIO构建过程中。由于我的停靠堆栈,我在.env文件的根目录下管理一些秘密。我的项目结构与此类似:

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);
}

有人知道我的案例可能的解决方法吗?

您可以使用以下两种解决方案之一:

  • 将platfomio建议与
  • 此文件中描述了此想法,但未使用
    .env
    文件

  • 将platformio建议与
  • 示例:

    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标志