# 环境变量 ## 1. DADK为什么设置环境变量? 在构建用户程序的过程中,DADK会设置一些环境变量,使得: - 构建脚本能够知道把构建产物放到哪里。 - 构建脚本能够知道它的依赖项的构建输出目录在哪里,以便引用它们。 ## 2. 环境变量的分类 在DADK构建用户程序的过程中,环境变量分为两种: - 全局环境变量:这些变量在所有构建任务中都可用。 - 任务环境变量:这些变量仅在当前任务中可用。通过[dadk用户程序配置文件](https://github.com/DragonOS-Community/DADK/blob/main/dadk-config/templates/config/userapp_config.toml)的`envs`字段设置。 ## 3. 全局环境变量 ### 3.1 变量列表 DADK在构建用户程序的过程中,将会设置以下全局环境变量: - `DADK_CACHE_ROOT`:DADK的缓存根目录。您可以在编译脚本中,通过引用该环境变量,来获得DADK的缓存根目录。 - `DADK_BUILD_CACHE_DIR_任务名_任务版本`:DADK的任务构建结果缓存目录。当您要引用其他软件库的构建结果时,可以通过该环境变量来获得。 同时,您也要在构建您的app时,把构建结果放到您的软件库的构建结果缓存目录(通过对应的环境变量获得)中。 - `DADK_SOURCE_CACHE_DIR_任务名_任务版本`:DADK的某个任务的源码目录。当您要引用其他软件库的源码目录时,可以通过该环境变量来获得。 - `DADK_CURRENT_BUILD_DIR`:当前任务的构建结果输出目录。您可以在编译脚本中,通过引用该环境变量,来获得当前任务的构建结果输出目录。构建完成时,您的构建脚本应当把构建结果放到该目录中。 ### 3.2 名称字符替换 由于环境变量的名称不能包含某些字符,而全局环境变量会引用任务的名称、版本号信息。 因此,在设置环境变量时,DADK会对变量名称进行字符替换。 具体规则如下: - 将所有字母转为大写。 - 按照下表对其他字符进行替换 | 原字符 | 替换字符 | | ------ | -------- | | `.` | `_` | | `-` | `_` | | `\t` | `_` | | 空格 | `_` | | `+` | `_` | | `*` | `_` | **举例**:对于任务`libc-0.1.0`,其构建结果缓存目录的全局环境变量名为`DADK_BUILD_CACHE_DIR_LIBC_0_1_0`。