调用QA-C时传入过多include参数导致执行失败问题求助
QAC调用传入大量include路径时报错问题
我在向QAC配置中添加源文件时遇到问题,经多次尝试排查,发现问题出在调用QAC时作为参数传入的include路径数量过多,减少include路径数量后QAC配置即可正常运行。
触发问题的操作逻辑
Makefile中的执行逻辑
我在makefile中编写了如下逻辑尝试批量添加源文件:
@for f in $(filter-out $(QAC_EXCLUDE_FILES),$(QAC_SRC)); do \ echo " - $$f" 1>&2; \ $(QAC) admin -P $(QAC_DIR) -a -- $(QAC_DEF) $(QAC_D_PROJ) $(QAC_INC) $$f >/dev/null; \ done
手动CMD单条调用测试
我也尝试在命令提示符中直接运行单条命令仅添加一个文件:
D:/Tools/PRQA_Framework_2.4.0/common/bin/qacli.exe admin -P D:/Output/qac -a -- -Itoo -Imany -Iincludes D:/Src/import.c
已验证的基础信息
- 整条命令长度未超过Windows命令行8191字符的上限,实际长度约为5500字符
- 使用的是公司通用的QAC配置,其他同事均无异常,仅最近我新增了若干include路径后出现该问题
- 相同的include路径列表在编译流程中可以正常使用,不存在CMD命令长度问题,仅调用QAC时会报错
- 运行环境为Windows 10,使用MSYS2工具链
两种调用方式的报错信息
- 从makefile调用报错:
/usr/bin/sh: -c: line 3: syntax error: unexpected end of file - 从CMD调用报错:
CreateProcess error=3, the system cannot find the path specified
只要减少include路径的数量,所有操作都能正常运行。
内容的提问来源于stack exchange,提问作者Lodhart
相关产品推荐
相关产品推荐

