qmake:gcc 命令太长,因为异常的 -iSystem "<path>"选项



我有一个QtCreator项目,它使用qmake,MingW和gcc(以及Qt 5.9.4(。当我在调试模式下运行 qmake 时,它会生成一个 gcc 命令,该命令太长以至于被截断。截断的位是源文件的名称和路径,因此毫不奇怪,gcc 直接退出并显示致命错误:没有输入文件。

由 qmake 生成的 gcc 命令(并在生成的 Makefile 中找到(如下所示:

<mode>/mtrx_2x2.o: ../<some path>/mtrx_2x2.c 
../<some path>/mtrx_2x2.h 
../<some path>/mtrx_struct.h 
../<some path>/mtrx_nxn.h
$(CC) -c $(CFLAGS) $(INCPATH) -o <mode>/mtrx_2x2.o ../<some path>/mtrx_2x2.c

<mode>要么是release的,要么是debug的,这取决于所选择的模式。

在该项目的调试模式下(但不在该项目的"发布"模式下,也不在任何其他项目(无论是"发布"还是"调试"(中,变量INCPATH扩展到比任何其他情况都长得多的内容,这就是导致截断的原因。

具体来说,我的大多数包含文件夹都与-I<path>一起列出(也像这样列出在此项目的发布模式和其他类似项目中(-isystem"<path>"一起列出(这是该项目中特定于调试模式的内容(。

这里是 QtCreator 运行的 qmake 命令:

C:QtQt5.9.45.9.4mingw53_32binqmake.exe <some path>/project.pro -spec win32-g++ "CONFIG+=debug" && C:/Qt/Qt5.9.4/Tools/mingw530_32/bin/mingw32-make.exe qmake_all

当然,这和其他没有给我带来此类问题的项目是一样的。

有人知道发生了什么吗?

额外的-isystem"<path>"是由我从其他人那里得到的内部脚本带来的,但没有意识到它到底做了什么。停用此脚本解决了我的问题。

无论如何,gcc 命令或任何命令的字符限制是多少?

最新更新