我有一个使用 qmake、MingW 和 gcc(以及 Qt 5.9.4)的 QtCreator 项目。当我在调试模式下运行 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:\Qt\Qt5.9.4\5.9.4\mingw53_32\bin\qmake.exe <some path>/project.pro -spec win32-g++ "CONFIG+=debug" && C:/Qt/Qt5.9.4/Tools/mingw530_32/bin/mingw32-make.exe qmake_all
当然,它和其他没有给我这样的问题的项目是一样的。
有人知道发生了什么吗?