Gmock宏未认识?YCM给了我错误,但是Bazel建立了良好
GMock macros not recognized? YCM gives me error, but Bazel builds fine
我正在使用YCM为我的VIM设置提供错误检查。在我使用mock_method时,它引发了错误,说" C 需要所有声明的类型说明符",但Bazel构建良好。我想我缺少某种标志?
这个家伙有同样的问题,但没有回答答案:
https://github.com/ycm-core/youcompleteme/issues/1332
从该人的答复来看,我知道我的YCM配置是什么,所以我检查了一下,但无济于事。
这是简单的代码
#include <netinet/in.h>
#include <gmock/gmock.h>
#include <string>
#include "socket_helper.h"
namespace Proj {
class MockSocketHelper : public SocketHelper {
public:
MOCK_METHOD(ssize_t, write, (std::string msg), (override));
MOCK_METHOD(std::string, read, (size_t n_bytes), (override));
};
在mock_method上,我得到的" C 需要所有声明的类型说明符",对我来说,这告诉我它无法识别宏。
这是我的YCMD配置中的基本标志:
BASE_FLAGS = [
'-Wall',
'-Wextra',
'-Werror',
'-Wno-long-long',
'-Wno-variadic-macros',
'-fexceptions',
'-ferror-limit=10000',
'-DNDEBUG',
'-std=c++11',
'-xc++',
'-I/usr/lib/',
'-I/usr/src/googletest/googletest/libgtest.a',
'-I/usr/src/googletest/googletest/libgtest_main.a',
'-isystem /usr/src/googletest/googletest/libgtest.a',
'-isystem /usr/src/googletest/googletest/libgtest_main.a',
'-I/usr/include/'
]
您可以看到,我尝试将libgtest.a链接到无济于事。我在做什么错?
-I
标志指定应该找到包含的文件的位置。
您应该将-I
标志的值设置为包含您包括的标头的文件夹,而不是列出通往编译的库的路径。
我的问题是,在/usr/include中有一个gmock和gtest文件夹,它是一个旧版本,没有mock_method,而是mock_method0,... 1等。是Clang版本会出现错误,但是我的Bazel Workspace文件从GitHub repo中提取了Gtest,因此这就是为什么它正确编译的原因。
相关文章:
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 使用Visual Studio 2012编译时,此代码会给我错误,但是使用代码块就可以了
- 错误:类没有名为"ThisW"的成员;你是说"这个"吗?但是代码没有说"ThisW",它已经说了"This"
- 我已经创建了一个模板函数,但是在检查输入是奇数还是偶数时收到错误 C++.
- 我收到一个断言错误,但是当我编写 cout 语句时,它会消失
- C++ .我正在尝试通过使用开关内的数组来获取用户输入,但是当我运行代码时,它显示分段错误?
- 我的程序运行良好,可以复制对象,但是当我使用复制分配(=)时,它仍然可以正常运行.为什么不给错误
- Gmock宏未认识?YCM给了我错误,但是Bazel建立了良好
- 当在函数调用中递增值时,程序正常工作,但是如果我们在单独的行中增加值而不是呼叫函数,则会出现错误.为什么
- 首先我已经成功安装了 caffe,但是当我运行一个 caffe 项目时,cmake 还可以,后来会发出很多错误
- 我很确定我犯了一个愚蠢的错误,但是这段代码给出的输出太长而无法阅读
- 我的代码在执行过程中运行良好.但是当我去提交它的显示分割错误时
- 我正在尝试在Eclipse中构建一个C 项目,但是即使在使用MINGW路径设置路径变量之后,也会获得构建错误
- LNK2001在X64环境中的编译代码上看到的错误.但是,该代码在X86环境中填充了罚款
- 调试期间没有错误,但是在正常执行期间错误
- 我在C 中写了一个简单的继承程序,但是我有很多错误
- libstdc++已弃用;移动到libc++[-Wdeprecated],但是更改会产生编译错误
- 当我通过删除临时节点来释放内存时,我会得到读取访问违规行为.但是只有当我返回错误语句时
- 我正在尝试通过CreateProcess()在Sublime Text中打开文件,但是构建显示错误
- ReadFile()说它失败了,但是错误代码是ERROR_SUCCESS