官方文档:https://github.com/getsentry/sentry-native
虽说官方文档有搭建步骤,奈何我用 git bash 试了 n 遍,最终都会报一大堆错误,白白浪费了我快一个下午的时间
最终找到了一位大哥的博客,里面也介绍了他遇到的坑,跟随他的方法,编译成功了
遂把一些更为详尽的步骤记录下来,供有 sentry 搭建需求的友友参考
sentry-native 版本:0.4.15
- 打开 CMake Gui 程序,千万不用要 command 窗口编译,一堆错误
- 输入源文件路径和输出的编译路径,注意:如果你的项目是 x86 的话,在填输出的编译路径时会提醒你是否选择 win32
- 先点击页面左下角的 Configure 按钮,会自动生成相应的选项
-
-
改下 SENTRY_BACKEND 的 Value 为 breakpad,并且不要勾选 SENTRY_BUILD_SYSTEM
-
最后可以再点击 Configure,没啥问题后点击 Generate 生成 breakpad 的工程文件,如下
- 确定生成了 breakpad 的工程文件,在 CMake Gui 页面上选择打开 Project 的工具,我这里使用的 vs2019
- 使用 Release 版本编译后,会发现两个错误,将它们注释即可
- 再重新编译就 OK 了,生成的 lib 文件和 dll 文件在项目文件下
- 接下来就可以在你自己的项目中配置 sentry 的头文件和库文件,注意在配置完相关路径后,还是需要添加静态链接才可以
#pragma comment(lib, "sentry.lib")
注意:如果是使用 breakpad 编译的 dll,在程序崩溃时是无法抓到错误日志的,需要使用 crashpad 创建 dll
编译过程:我们需要先在 crashpad_build 文件中打开工程,编译出 sentry_native 项目需要的静态文件库
最后再打开 sentry_native.sln
在 crashpad.sln 的编译过程中会出现很多 warning C4819 错误,我这边的解决方法是把错误的源文件的编码格式使用 notepad++ 一一改成 UTF8-BOM 即可解决
补充:
对于之前介绍的错误,特别是 sentry 附带的 example 在编译后会因字符报错,这边我们可以取消勾选 SENTRY_BUILD_EXAMPLES 和 SENTRY_BUILD_TESTS
对于 warning C4819 错误,因为涉及到的文件太多了,我们可以在编译器中将警告视为错误改为否
如果需要编译静态库,建议按照下面这个设定来,这样库跑起来不会依赖 VC 库了