cquery 解析 c++ boost语法

不知道。和你說話太費勁了。OSS一開始就應該給專案鏈接。

确实使用.cquery文件是可以解决问题的

你貼上內容歧義會更少。

而我的环境这个是系统路径

不知道你在說什麼。

使用CMake生成的compile_commands.json作为索引.

直接給命令更清晰。

会报错no matching

如果能指出point位置,是lsp-ui-flycheck產生的信息會更好。

cquery預設initialization option是,cacheFormat: “json”,生成的.cquery/**/*.json人類可讀,你看裏面的includes.resolved_path就知道:不帶-isystem使用compile_commands.json時,路徑可能錯誤了。

抱歉一下,我前面回覆也是懶惰,自己想少打幾個字(一邊在幹別的事),雖然知道多說一點可以減少交互次數。

抱歉, 因为我主要是个使用者, 可能不太清楚提供哪些信息能够更好的帮助解决问题, 之前的信息有点散, 这里重新整理一下我这边的现状, 有些信息在前面的几条回复中会有重复:

  1. 我的环境是Ubuntu16.04, 我在我的环境中安装了boost1.58, 安装后的路径在/usr/local下面, 其中boost的头文件在/usr/local/include下. 这个路径不需要显示的包含在CMakeLists.txt.cquery中.
  2. 这里是一个在我的环境下可以正常编译通过并运行的一个测试工程. 其中CMakeLists.txt的第8行有配置set (CMAKE_EXPORT_COMPILE_COMMANDS 1), 所以直接运行cmake .会直接在目录下生成compile_commands.json文件. 下图是当使用这个compile_commands.json时, 在我机器上的效果:从图中应该可以看出错误是由cquery和lsp-ui产生的.
  3. 生成的compile_commands.json中的内容如下:
[
{
  "directory": "/home/allen/tmp/boost/build",
  "command": "/usr/bin/c++       -std=gnu++11 -o CMakeFiles/boost_test.dir/main.cpp.o -c /home/allen/tmp/boost/main.cpp",
  "file": "/home/allen/tmp/boost/main.cpp"
}
]
  1. 使用.cquery文件后, 再次查看上图中的文件, 就没有错误了, 对应的补全也可正确完成, 这里就不再贴图了. 其中我用的.cquery文件只有如下内容:
%clang++
%cpp -std=gnu++11
-pthread
  1. 我分别查看了使用compile_commands.json.cquery时, 在.cquery_cached_index下 的BoostTester.hpp.json文件, 里面都包含了"-isystem /usr/local/include".
  2. 不知是否还需要提供其他信息?