不知道。和你說話太費勁了。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
時,路徑可能錯誤了。
抱歉一下,我前面回覆也是懶惰,自己想少打幾個字(一邊在幹別的事),雖然知道多說一點可以減少交互次數。
deep
22
抱歉, 因为我主要是个使用者, 可能不太清楚提供哪些信息能够更好的帮助解决问题, 之前的信息有点散, 这里重新整理一下我这边的现状, 有些信息在前面的几条回复中会有重复:
- 我的环境是Ubuntu16.04, 我在我的环境中安装了boost1.58, 安装后的路径在
/usr/local
下面, 其中boost的头文件在/usr/local/include
下. 这个路径不需要显示的包含在CMakeLists.txt
和.cquery
中.
-
这里是一个在我的环境下可以正常编译通过并运行的一个测试工程. 其中
CMakeLists.txt
的第8行有配置set (CMAKE_EXPORT_COMPILE_COMMANDS 1)
, 所以直接运行cmake .
会直接在目录下生成compile_commands.json
文件. 下图是当使用这个compile_commands.json
时, 在我机器上的效果:从图中应该可以看出错误是由cquery和lsp-ui产生的.
- 生成的
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"
}
]
- 使用
.cquery
文件后, 再次查看上图中的文件, 就没有错误了, 对应的补全也可正确完成, 这里就不再贴图了. 其中我用的.cquery
文件只有如下内容:
%clang++
%cpp -std=gnu++11
-pthread
- 我分别查看了使用
compile_commands.json
和.cquery
时, 在.cquery_cached_index
下 的BoostTester.hpp.json
文件, 里面都包含了"-isystem /usr/local/include"
.
- 不知是否还需要提供其他信息?