在向QAC配置中添加源文件时遇到问题。经过多次尝试,我发现问题在于调用QAC时定义为参数的包含太多。如果我将减少包含的QAC配置的数量将通过。
我在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
我还尝试在命令提示符中运行单个命令来添加一个文件:
D:/Tools/PRQA_Framework_2.4.0/common/bin/qacli.exe admin -P D:/Output/qac -a -- -Itoo -Imany -Iincludes D:/Src/import.c
我很确定整个命令行不超过8191个字符的限制(它大约是5500个字符)。
我正在使用我们公司常见的QAC配置,像我的许多同事一样,没有任何问题。在过去的几天里,我刚刚添加了一些新的内容。
结果总是相同的:
- 从makefile调用:/usr/bin/sh: -c:第3行:语法错误:文件异常结束
- 从CMD调用:CreateProcess error=3,系统无法找到指定的路径
但是,如果我只是减少包含,一切都很顺利。
另外,我不会说这是CMD的问题,因为我在构建过程中使用相同的包含列表,没有任何问题!这只是QAC的问题。
我的设置是Windows 10, MSYS2工具。
我联系了QAC支持,更好的方法是如何向QAC提供所有信息是生成包含所有定义和包含的列表文件(一行=行源文件)。这种方式也比逐个传递源文件要快得多。
所以文件列表qac_sources.txt(由makefile生成)可能看起来像这样:D:/Project/a1.c -D__far_func= -IToo -Imany -Iincludes
D:/Project/a2.c -D__far_func= -IToo -Imany -Iincludes
D:/Project/a3.c -D__far_func= -IToo -Imany -Iincludes
D:/Project/a4.c -D__far_func= -IToo -Imany -Iincludes
:
D:/Tools/qacli.exe admin -P D:/Project/Output/qac -F D:/Project/Output/qac/qac_sources.txt
希望对大家有所帮助。