小记最近干了些什么的碎碎念
碎碎念
关于OpenCV带FFmpeg支持的编译
很早之前做过一个OpenCV的毕业项目.链接.里面有一个明显没有处理好的点就是其运行需要外置命令ffmpeg
可用:
这是一个非常抽象的问题,当时就发现是因为编译的OpenCV没有FFmpeg支持,但是碍于不可抗力因素又不得不搁置,最近突然想起来了就又试着做了一下.
首先是关于源代码问题,早期OpenCV是可以很好的编译FFmpeg支持的,当时FFmpeg用的还是make系统,后来FFmpeg的构建文件经历了爆改,导致很长一段时间内编译带FFmpeg支持的OpenCV相当复杂困难,不过到现在,这个问题已经很好地解决了.
你可以直接在OpenCV的Github Release页面下载到源代码,比如4.10.0,这个源代码不分平台的,都可以编译成功.
然后是FFmpeg,因为我是在Windows平台进行的开发,所以要去下载Windows版本的,并且因为要手动编译OpenCV,FFmpeg应该要带上include
和lib
文件.
在FFmpeg Download找到Windows的gyan.dev镜像,下载Release的essentials版本:
里面的目录结构如下:
然后进到OpenCV源代码目录,新建build
目录.新建一个目录其实是大型Cmake项目的一贯做法,但是我以前用Cmake就是喜欢直接源代码里构建(T_):
1 |
|
接下来调整Cmake的参数,我在Windows平台直接用的MinGW
进行构建:
1 |
|
设置构建类型为Release
,开启带入FFmpeg构建,指定FFmpeg的头文件和Lib目录,最后..指定是上层文件夹的CmakeLists.txt文件,最后应该可以看到是这样的:
其中的FFmpeg选项是On.
然后你就可以make
了,最好指定-j
参数加快构建速度,比如我的就是make -j10
.
结果是这样:
这样的过程还可以在Linux上干一遍,相当地简单,下载源码我就不说了,你只需要像下面这样:
1 |
|
然后等待构建完成就可以了.
关于VSCode的C语言插件问题
这其实是一个老问题了,我就直说了,微软官方给的C/C++插件就是一坨.当然呢我们现在有更好的替代品clangd
.
clangd在语法提示和智能补全这方面做的相当好,因为我之前用惯了C/C++插件的调试功能,(如果你也习惯了的话)所以我这里只更换智能提示插件为clangd.
对于Windows:
首先要下载clangd
,因为它只是llvm的一部分,你可以不需要下载整套llvm.Github
找个地方解压就行了,不需要配置环境变量.
然后打开VSCode,找到这个插件:
安装后重启VSCode,在设置里找到clangd的插件设置:
然后找到下面两个选项:
第一个选项是全局的头文件搜索库,我用的是MinGW所以直接填两个目录就行了,注意格式是-Ixxxxxx
,大写的I.第二个选项是clangd.exe的位置,也是照着填就行.
这里贴一下MingW在Windows平台上的头文件示例:
1 |
|
最后,关掉C/C++插件的智能提示就可以了:
那Linux下的操作就简单多了:
1 |
|
然后安装插件,关掉C/C++的智能提示,就完事了.是的,尊贵的Linux用户不需要手动配置clangd.
再说一下clangd的一些小问题. clangd在开项目文件夹的时候默认不是MingW方向的,以至于甚至会对MingW的stdio.h报错, 解决办法是在项目根目录下添加.clangd
文件,然后把平台设置为MingW:
1 |
|
这只对当前项目有效, 而且这些flag不能放到VSCode的配置里面, 全局生效需要在C:\Users\用户名\AppData\Local\clangd
文件夹下新建config.yaml
文件, 然后上面的内容. 需要注意, -std=c++20
是不能给C文件用的.
然后再说一个简单的配置问题,完全的配置你可以在知乎,我只配置了两个比较顺手的东西:
1 |
|
第一个是完全补全(其实是默认的),第二个是自动补全头文件,第三个是函数不会完全补全参数(这个功能其实也还行,你可以用Tab键跳到下一个参数).
然后说一下用了clangd之后的代码格式化问题,clangd内置的代码格式化是LLVM风格(挺丑的),我个人比较喜欢Microsoft风格,原来的C/C++插件有这个格式化功能,但是disable Intelligence之后是不可用的.
所以借助一下Clang Format这个插件:
这个插件是要使用clang-format这个程序的,理论上需要我们下载达1G的LLVM才能有,但是我们可以用C/C++插件内置的.
一般位于C:\Users\用户名\.vscode\extensions\ms-vscode.cpptools-1.22.11-win32-x64\LLVM\bin
这个目录下.
填上去,改一下代码风格,然后随便右键一个c文件,选择使用..格式化文档
就可以了.
在Linux上可以直接sudo apt install clang-format
还有一个关于Rider配置SDK的碎碎念
如果不小心把Rider的SDK弄到了别处并且是保存到此电脑,可以在~/.config/jetbrains/Riderxxx/resharper-host/GlobalSettingsStorage.DotSettings这个文件找到配置行.