Bash传递SDK环境变量至Qt sdktool时参数解析失败的解决方法
解决sdktool addKit传递环境变量时的参数解析错误问题
问题原因
你当前通过字符串变量ENV_VALUES传递--env参数的方式会导致Bash对参数进行错误的拆分和引号处理。当变量展开时,Bash会忽略你手动添加的引号,将包含空格的环境变量值拆分成多个独立参数,进而触发sdktool的「Argument parsing failed」错误。
解决方案:使用Bash数组存储参数
正确的做法是用Bash数组来保存所有--env参数,数组会自动保留每个参数的完整性,避免拆分问题。
1. 重新生成环境变量参数数组
替换原来的字符串赋值命令为数组赋值:
# 初始化空数组 ENV_ARGS=() # 遍历环境文件中的export行,将每个转换为--env参数加入数组 while IFS= read -r line; do # 移除export前缀和引号,格式化为VAR=value格式 cleaned_line=$(echo "$line" | tr -d '"' | sed 's/export //') ENV_ARGS+=("--env" "$cleaned_line") done < "$SDK_PATH/../environment-setup-cortexa53-crypto-veld-linux"
2. 使用数组调用sdktool
在sdktool addKit命令中直接引用数组(注意"${ENV_ARGS[@]}"的写法,双引号和[@]是确保参数正确展开的关键):
sdktool addKit [其他必要参数] "${ENV_ARGS[@]}"
验证方法
可以通过以下命令查看数组中的每个参数是否保持正确格式:
printf "%s\n" "${ENV_ARGS[@]}"
每个--env和对应的环境变量键值对会分别作为独立的数组元素输出,确保传递给sdktool时参数结构完全符合要求。
内容的提问来源于stack exchange,提问作者T4ng10r
相关产品推荐
相关产品推荐

