gcc - 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>
是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
当然,它和其他没有给我这样的问题的项目是一样的。
有人知道发生了什么吗?
解决方案
额外-isystem"<path>"
的内容是由我从其他人那里得到的内部脚本带来的,但我并没有意识到它到底做了什么。停用此脚本可以解决我的问题。
无论如何,gcc 命令的字符限制是多少 - 或者实际上是任何命令?
推荐阅读
- android - NetInfo.getConnectionInfo() 为 android 返回未知
- groovy - 如何使用 groovy 从日期时间字段中提取时间并仅将时间修改为晚上 9:00?
- reactjs - 如何在 Next.js 中实现 React-form-builder2
- kendo-grid - 如何在剑道网格ui中同时重新排序行和滚动
- c# - 如何使用蓝牙从 Windows Pocket PC 执行 PRINT 命令(c#)
- javascript - 用 PHP 构建文件树数组并在 VueJS 中渲染
- angular - 将数据从组件传递到服务 1。服务 2 依赖于服务 1。服务 2 将数据传递给组件
- laravel - 如何使用 2 laravel 项目设置 apache
- date - WEBI BO 如果值匹配,则基于今天显示第二天(日期名称)
- c# - IntPtr C# 到 C++ void*