繁体   English   中英

ycm-generator 传递的 -I 标志缺失导致的 YCM 插件错误如何处理?

[英]How to deal with YCM plugin error caused by lack of -I flag passed by ycm-generator?

假设我在 vim 中使用youcompletemeycm 生成器插件,
在我的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM