0

我在将源文件添加到我的 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 工具。

4

1 回答 1

0

在和我联系 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

希望这会对某人有所帮助。

于 2021-10-15T11:19:56.280 回答