【问题标题】:How to remove project's root dir from include path in qmake如何从 qmake 的包含路径中删除项目的根目录
【发布时间】: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>,因为这是很久以前发明的分离语法的主要原因。

标签: c++ qt makefile std qmake


【解决方案1】:

有适当的配置选项:

CONFIG += no_include_pwd

【讨论】:

  • 您好,感谢您研究和提交“未记录的”QTBUG。它确实有效,但我对我的项目中发生的事情感到困惑。当项目被称为“bug”时,我最初有这个 INCPATH:-I../bug -I../bug/src -I../bug -I。添加 CONFIG 行后,我得到:-I../bug/src -I../bug 知道为什么我最初有多个“-I../bug”路径吗?为什么在添加 CONFIG 选项后它仍然存在(一次)?我可能错了,但“-I../bug”与“-I.”是一样的,不是吗?
  • @FrozenTarzan 我没有看到你的 *.pro 文件——所有的答案都应该在里面。考虑提出新问题:)
  • 当然,但我想知道您是否还有“返回一个目录并转发到项目目录”包含更改后的路径。我只是想知道似乎来自某个命令的“-I../project_dir”路径。如果你告诉我你在改变之后没有任何这些并且去掉了“-I”。和“-I../bug”然后我打开一个新问题:-)
  • @FrozenTarzan 我两次没有相同的路径并且我的错误已被此提交修复,所以我可以假设我没有遇到这样的问题。但我现在无法检查。我也没有在 Linux 上检查它,因为即使没有这个配置集也没有问题(我想你现在在 Linux)。
  • 是的,我是。无论如何,谢谢,现在我知道我需要进一步调查:-)
猜你喜欢
  • 2013-04-18
  • 2021-09-02
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-14
  • 2015-03-31
相关资源
最近更新 更多