我怎样才能告诉基于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++文件时都必须创建整个项目?
我怎样才能告诉基于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++文件时都必须创建整个项目?
我经常面对这个问题。我现在也可以在我的机器上复制它 (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你使用的操作系统和编译器是什么版本? 检查安装的环境变量是否正确,例如C++头文件在哪里?一种方法是将“头文件包含路径”添加到左侧面板中的项目配置中,转到“项目-程序-目标”,并添加包含路径。另一种方法是将C++标准头文件的完整路径添加到您的.pro文件中的“includepath”变量中。
独立的C++文件可以进行编辑,但很可能会失去#include和自动完成等功能。我个人总是以某种方式将所有项目保存在Qt中,无论是一个简单的GUI程序还是执行一个任务的程序,这样我就可以调试它(gdb似乎不喜欢命令行程序,至少在我的经验中是这样),或者对于非Qt依赖项目使用“简单的C++命令行”项目。
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/
这取决于当前项目定义的工具链。
工具链在“工具-选项-构建和运行-工具链”中定义。 大多数是自动检测的,但您可以添加自己的工具链。
没有默认工具链,因此您需要一个项目才能在所选工具链中找到这些头文件。