Qt Creator无法找到头文件(提示:“没有这样的文件或目录”)

18

我怎样才能告诉基于Qt 4.7.4 32位的Qt Creator 2.4.1在哪里默认查找头文件?

当我在Qt Creator中打开一个C文件并执行操作时:

#include <stdio.h>

它会给这一行加下划线并表示

stdio.h: No such file or directory

我想告诉它在我选择的目录中查找标头(header);我该怎么做?

更新

我想问一下:这是可能的吗?还是每次想要编辑一个独立的C++文件时都必须创建整个项目?


为什么需要使用 stdio.h? - user336063
1
Qt Creator是用于使用Qt框架编写C++代码的。我想我不明白为什么你要费这么大劲去避免使用IDE设计时就应该使用的框架。 - user336063
8
@Sosukodo:Qt Creator本身就是一个非常棒的集成开发环境,不考虑其Qt特定的功能。 - rubenvb
1
您可能需要修改Qt Creator源代码以满足您的需求,因为Qt Creator并不是为了执行您所要求的操作而设计的。 - user336063
6
@Sosukodo那又怎样?OP遇到了一个问题,QT Creator无法定位头文件。在这种情况下他正在尝试做什么并不重要... - Aleks
显示剩余3条评论
6个回答

14

我经常面对这个问题。我现在也可以在我的机器上复制它 (Mac OS)。

看起来QtCreator需要有一个项目来正确处理GCC路径分析(除了Qt框架路径)。
Qt用于查找头文件的过程是启动GCC(或Windows上的编译器)使用特殊参数使其输出编译器找到头文件的路径。但是,要做到这一点,它必须有一个关联到您的文件的项目,因为它使用此项目来确定要使用何种工具链,从而确定GCC的位置。

所以答案是:始终创建一个项目,以使用语法分析。
请注意,在创建此项目时,非常重要的一点是定义您将使用哪个版本的Qt SDK和工具链,否则语法控制-单击将无法正常工作。

您可能会发现一些有趣的方法来使用Qt项目文件,尽管不使用Qt SDK或使用Creator来构建您的项目。请参见类似问题的答案: https://dev59.com/rFbUa4cB1Zd3GeqPAqYx#5817226

请注意,我个人使用这种方法,使用一个 .pro 文件简单地列出我的项目的所有子目录,并禁用所有构建的键盘快捷方式,以便我只使用Qt Creator作为编辑器。语法高亮/链接非常出色,并且异常迅速,比Eclipse快得多,是个例外!

要做到这一点,只需在项目目录中输入 qmake -pro 即可。它会创建一个 [DIR].pro 文件,您可以随时删除。

一年前我在这里提交了一个关于语法分析方面的 bug:https://bugreports.qt.io/browse/QTCREATORBUG-4846。问题是我使用的编译器输出的数据是法语而不是英语。他们在2.4版本中修复了代码,但可能是 Unix 特定的(有关更多信息,请参见该问题的评论),因此您可能需要测试一下是否可以将此问题应用于您的情况。

如果您在创建专为您的版本而设的项目后仍然遇到问题,请确保向 qt-project.org 的人员指出!

否则,我所看到的唯一解决方案是修改 QtCreator 的源代码。您可以在他们最新发布的帖子中找到有关如何贡献的一些信息: https://blog.qt.io/blog/2012/03/15/qt-creator-2-5-beta/(并尝试他们支持 C++ lambda 表达式的新测试版)。


你应该是指 qmake -project,而不是 qmake -pro。或者你的选项可能在早期版本的Qt中有效,但在当前版本中无效。 - Ruslan

1

你使用的操作系统和编译器是什么版本? 检查安装的环境变量是否正确,例如C++头文件在哪里?一种方法是将“头文件包含路径”添加到左侧面板中的项目配置中,转到“项目-程序-目标”,并添加包含路径。另一种方法是将C++标准头文件的完整路径添加到您的.pro文件中的“includepath”变量中。


我需要检查哪些环境变量?(我没有项目,只有一个单独的文件...这就是为什么我要求默认目录的原因。) - user541686
没有默认的工具链/目录。你需要一个项目来进行语法高亮以找到头文件。 - Chris Browet

1

独立的C++文件可以进行编辑,但很可能会失去#include和自动完成等功能。我个人总是以某种方式将所有项目保存在Qt中,无论是一个简单的GUI程序还是执行一个任务的程序,这样我就可以调试它(gdb似乎不喜欢命令行程序,至少在我的经验中是这样),或者对于非Qt依赖项目使用“简单的C++命令行”项目。


1
我每次想编辑一个独立的C++文件,都必须创建一个完整的项目吗?
不需要,你可以通过在项目树的根目录上右键单击-上下文菜单-添加现有文件来将独立文件包含在现有项目中。你可以为此分配快捷键,以及为从项目中删除文件分配快捷键,这样使用您喜欢的编辑器和其环境就会变得快速而简单。你可以把它看作是你只是打开文件。不幸的是,没有命令行参数可以为独立文件分配默认项目(及其环境),以便通过在文件管理器中双击使用它。
希望这有所帮助。

0
add INCLUDEPATH to "project.pro" file

example for raspberry pi qt projects:
# Qt Creator can't find headers (says: “No such file or directory”)
# add compile includes
INCLUDEPATH += /home/user/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/libc/usr/include/ \
               /home/user/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/libc/usr/include/arm-linux-gnueabihf/
# pi rootfs includes
INCLUDEPATH += /home/user/raspi/sysroot/usr/include/

0

这取决于当前项目定义的工具链。

工具链在“工具-选项-构建和运行-工具链”中定义。 大多数是自动检测的,但您可以添加自己的工具链。

没有默认工具链,因此您需要一个项目才能在所选工具链中找到这些头文件。


它已经成功自动检测到了Visual Studio 2008和2010,但由于某种原因它没有找到头文件。:\ - user541686

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接