【发布时间】:2017-03-11 15:06:38
【问题描述】:
qmake 的默认行为是将项目的根路径添加到包含路径。在 Makefile 中,它会生成如下内容:
INCPATH = -I..\bug -I. -I..\..\Qt\Qt5.8.0\5.8\mingw53_32\mkspecs\win32-g++
其中“bug”是项目的名称。我不想要“-我”。部分。如何在.pro 文件中删除它?
我试过了:
INCLUDEPATH -= "."
但它没有任何改变。
详解:我的项目在 Linux 上编译正常,但在 Windows (mingw) 上编译失败。经过深入研究,我意识到标准 C++ 库 (string.h) 中包含一个名为“process.h”的文件。问题是在我的项目中有一个名称完全相同的文件。和 矛盾的是,我的项目中的文件包含在标准库的标头(!!)中。该行为导致字符串头文件无法编译。
【问题讨论】:
-
一个明显的解决方案是重命名项目中的
process.h文件。 -
@KubaOber 这不是任何解决方案。这是一种解决方法。
-
这是有争议的。您也将在其他构建系统上反复遇到该问题。一般来说,在您的项目中让任何文件与任何流行的标准头文件命名相同是一个非常糟糕的主意。通过专注于 qmake,你正在把罐子踢到路上:)
-
这个问题可能更普遍。就个人而言,我的 INCLUDEPATH 中不需要项目的根路径,因为我总是使用
#include "foo.h"而不是#include <foo.h>,因为这是很久以前发明的分离语法的主要原因。