首页 > 解决方案 > qmake:gcc 命令太长,因为 -isystem 异常”“ 选项

问题描述

我有一个使用 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>releasedebug,取决于选择的模式。

在该项目的调试模式下(但不是该项目的发布模式,也不是任何其他项目,无论是发布还是调试),变量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

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

有人知道发生了什么吗?

标签: gccqt-creatorqmakeinclude-pathqt5.9

解决方案


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

无论如何,gcc 命令的字符限制是多少 - 或者实际上是任何命令?


推荐阅读