我即将使用Archlinux上的CMake为C ++项目配置KDevelop(5.2.1)。在KDevelop中以及从命令行构建我的项目,但是我为代码完成遇到了几个解析器问题:
一开始,我包含了像
这样的C ++标准库头文件#include <cstdlib>
在默认系统中找不到的标头包含目录。我需要在Project-&gt; Open Configuration-&gt; Language Support-&gt; Includes / Imports中添加这些目录:
/usr/include/
/usr/include/c++/7.2.1/
对于C标题,它看起来很简单。在C ++的情况下,这看起来很糟糕,因为它看起来可能会不时发生变化。
是否有更可靠且独立于项目的方式来执行此配置?
解析器错过了本地头文件中的一些声明,这取决于已配置的include目录列表。例如,QuadMatrix
类在include/quadmatrix.h
中声明。在代码中
#include <cstdlib>
#include "quadmatrix.h"
QuadMatrix::QuadMatrix(int dimSize)
: dimSize(dimSize)
{
data = (int*) std::malloc(sizeof(int) * 2 * dimSize);
}
当我配置系统包含目录时, QuadMatrix
是解析器的“未声明标识符”,如1所示。如果我重置此配置cstdlib
并且std::malloc
未知,但最终宣布QuadMatrix
。
我还尝试将项目include目录添加到配置中,但它没有改变任何内容,并且首先不是必需的。
有趣的是,编辑建议我在两种情况下都添加#include <quadmatrix.h>
,但这也无法解决问题。
修改
我发现在Project-&gt; Open Configuration-&gt; Language Support-&gt; C / C ++ Parser(右下角)下使用GCC
代替Clang
解决了我的问题并使我的任何包含目录配置不必要。所以我猜KDevelop以错误的方式使用了clang解析器(5.0)。