我有一个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 命令或任何命令的字符限制是多少?