如何禁止 Qt Creator 自动使用特定的包含路径?

Posted

技术标签:

【中文标题】如何禁止 Qt Creator 自动使用特定的包含路径?【英文标题】:How to prohibit Qt Creator to use specific include path automatically? 【发布时间】:2015-01-07 14:28:06 【问题描述】:

我在同一台 CentOS 机器上使用了 2 个不同的 GCC 版本(包括在操作系统一和自定义一中),我不想用我的自定义替换系统 GCC,我使用自定义一个只构建一些软件。 问题是Qt Creator 添加/usr/include 以自动包含文件夹,因此自定义GCC 开始使用系统C++ 包含并崩溃并出现error: '::memchr' has not been declared 之类的奇怪错误消息。我的*.pro 文件中的任何地方都没有/usr/include,所以看起来Qt Creator 自己添加了它们。 如何禁止Qt Creator 项目使用某些特定的包含补丁以允许在具有2 个GCC 版本的机器上编译?当我在同一台机器上使用Eclipse CDT 时,它工作得非常好,因为Eclipse 本身不添加任何东西,只使用我指定的包含目录。

【问题讨论】:

QtCreator跟那个没关系,你用的是什么项目。 我使用静态库项目。它是我在许多操作系统和平台上编译的可移植库,它不包含任何特定于 QT 的内容,但是,我在这里尝试像通用 IDE 一样使用 QT Creator。 您必须编辑 .pro 文件,用 Google 搜索此 remove default include paths from .pro qmake project.,然后指定您自己的包含路径。 【参考方案1】:

您可以使用CXXFLAGS += -nostdinc

这应该执行以下操作(摘自手册):

不要在标准系统目录中搜索头文件。只有您指定的目录 使用 -I 选项(以及当前文件的目录,如果合适)进行搜索。

【讨论】:

没用。问题不在于错误的标准包括。问题是qmake 使用-I 开关显式添加了一些包含,这些包含导致错误,即使我将空值设置为INCLUDEPATHqmake 也会添加它们。 这些文件是您项目的本地文件吗?或者,它们是否与系统相关(例如已安装的应用程序/库)? qmake 将绝对路径添加到我的项目以包含路径,即。 e.它生成命令行选项-I/my/project/path。该选项导致编译失败,可能我的某些文件名与系统文件名冲突,例如String.hmutex.h。当我复制由qmake 生成的构建命令并删除此选项时,它编译得很好,例如,它也与 Eclipse CDT 一起编译得很好,因为它不会添加任何我不想要的东西。不好的是,qmake 会添加此包含路径,即使我在我的 .pro 文件中为 INCLUDEPATH 分配了一个空值。【参考方案2】:

这不是优雅的答案,如果有人有更好的想法,仍然欢迎您发布您的答案,我会接受。 因此,我在qmakemake 命令之间添加了自定义构建步骤,并在此自定义构建步骤中使用sed 命令即时编辑Makefile 并删除额外的包含。这个解决方案有效,但是很丑。

【讨论】:

以上是关于如何禁止 Qt Creator 自动使用特定的包含路径?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Qt Creator 中添加包含路径?

如何在 Qt Creator 的 CMakeLists.txt 中包含头文件?

如何在 Qt Creator 中制作 .exe 文件

Qt Creator 5.6 如何在一个项目中使用大量(3000+)小部件加速编译

Qt Creator 和 MSVC - 在调试时忽略特定的异常类型?

QT Creator 代码自动补全