本文主要是介绍Protobuf,gmock,gtest在windows10上的编译与安装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先要说的是,这种编译与安装不是必须的,用户可以自己下载protoc的二进制文件直接使用。因为开发和调试的原因,我经常反复需要编译不同版本的protobuf,例如NCNN用的protobuf3.4.0。因为重复的过程中自己也没有详细记录过,所以这里记录一下备忘。
(I)第一步,下载gmock。
https://codeload.github.com/google/googletest/tar.gz/refs/tags/release-1.11.0https://codeload.github.com/google/googletest/tar.gz/refs/tags/release-1.11.0
编译安装 gmock (现在并入到了gtest)不是必须的,后续protobuf只要求路径正确即可。
不过我这里还是先编译一下,非常简单,用cmake配置后编译即可,如下,
注意,在Configure时候,cmake会弹出对话框,此时可以选择win32还是x64,我这里选择的是x64
(II)第二步,下载编译安装 protobuf-3.4.0。
原来下载编译protobuf的时候,直接把gmock下载到protobuf下面的子文件夹就可以了,可惜的是,gmock现在被google并入到gtest中,所以如果是从上面这个链接下载下来的话,地址可能要变。
我解压后的gmock地址在这里:D:\vsAI\googletest1110\googlemock
我的protobuf目录在这里:D:\vsAI\protobuf340
直接配置的话,会生成错误:cannot find gmock directory.
解决办法是写入正确的地址。修改文件<D:\vsAI\protobuf340\cmake\tests.cmake> 中的第1,16,25等行。不过这比较麻烦,我的解决办法是直接
(1)把文件夹
D:\vsAI\googletest1110\googlemock
拷贝到
D:\vsAI\protobuf340\gmock
(2)把文件夹
D:\vsAI\googletest1110\googletest
拷贝到
D:\vsAI\protobuf340\gmock\gtest
然后再配置cmake-gui,就一切OK了。最后Open Project,用vs2017编译,一切顺利,如下,
后话:编译老版本的probobuf,最主要的是设置对googlemock和googletest的路径。
Probobuf3.9.1 + VS2019
当编译protobuf3.9.1时,很简单,直接把googletest解压到thirty_party目录下即可。如下图,
注意事项
我的zlib是自己编译的,所以在用cmake-gui配置时需要填入zconf.h和zlib.h的路径,
D:\vsNCNN\zlib1211\dev\zconf.h
D:\vsNCNN\zlib1211\zlib.h,
cmake-gui的配置如下,
出现的问题
当在path环境变量中设置了其他版本的protoc.exe的路径时,编译很容易出现冲突,比如这样的错误,
https://github.com/tensorflow/tensorflow/issues/29978
protobuf/arena.cc:53:13: error: use of undeclared identifier 'LifecycleId'
std::atomic<LifecycleId> ArenaImpl::lifecycle_id_generator_;
解决办法就是在环境变量中删除这些路径,删除cmake-gui中的cache,重启cmake-gui后再配置编译。
这篇关于Protobuf,gmock,gtest在windows10上的编译与安装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!