![](/img/trans.png)
[英]GMock macros not recognized? YCM gives me error, but Bazel builds fine
[英]How to deal with YCM plugin error caused by lack of -I flag passed by ycm-generator?
假设我在 vim 中使用youcompleteme和ycm 生成器插件,
在我的CMakeLists.txt文件中我有这样的东西: configure_file(src/config.hpp.in config.hpp)
我的项目目录结构如下所示:
> tree
.
├── CMakeLists.txt
└── src
├── config.hpp.in
└── main.cpp
现在,在我的src/main.cpp文件中,我有:
#include "config.hpp"
代码编译,因为我添加target_include_directories(target BEFORE PRIVATE "${PROJECT_BINARY_DIR}")
到CMakeLists.txt文件,但因为包含的文件是从模板生成的文件,
ycm 生成器无法添加构建目录(因为那是 config.hpp 文件结束的地方)
到标志列表,因此 ycm 给我一个错误,指出不存在这样的文件。 我可以像这样手动 append 这个标志:
flags = [
'-x',
'c++',
'-I/tmp/tmp36Q3_Q',
'-Ibuild'
]
但是正如您从代码片段中看到的那样,似乎已经有一个 -I 标志
附加到标志列表。 目录的名称对我来说没有任何意义。
这确实让我想知道,如果ycm 生成器可能试图找到我的构建目录,
并由于某种原因失败,例如 cmake 中缺少选项?
有谁知道如何让ycm 生成器传递位置
生成的文件自动包含目录?
更准确地说,我想补充一点,我一直在生成 .ycm_extra_conf.py 文件
来自 vim,在项目的根目录中,使用命令:YcmGenerateConfig。
我已经应用了解决方法。 我将configure_file选项中的 output 位置修改为源目录,如下所示:
configure_file(src/config.hpp.in "${CMAKE_CURRENT_SOURCE_DIR}"/src/config.hpp)
这样,ycm 只会抱怨,直到我“./configure”项目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.