最近需要编译jrtp库,在windows下编译后发现其中cmake的弯弯道道还挺多的,故在此记录。
首先,我们先看一看jrtplib的官网,官网对于该库已有较为详细的介绍。
可以在官网看到,jrtplib在编译时可以选择是否使用jThread库,jThread库是一个封装的跨平台thread库,可以选择是否使用,同时这对于后续使用jrtplib进行开发会有一定的影响。比如,如果使用jThread库,对于开发者而言就可以不用管理RTCP,jrtplib会在后台轮询处理;但是如果不使用jThread库,对于RTCP数据,开发者就得自己处理。
笔者这儿选择了基于jThread库。
下面开始按流程构建编译jrtplib。
1. 下载
从官网上下载jrtplib和jThread的源码并解压。
2. 构建jThread库
因为jrtplib我们选择基于jThread,所以我们要先构建编译jThread库。
打开cmake-gui。
在Where is the source code: 栏 选择刚才下载的jThread源码文件夹
在Where to build the binaries: 栏 选择构建的二进制文件存放位置,笔者在这儿直接选择在源码目录下创建一个build文件夹
点击“Add Entry”增加CMAKE_INSTALL_PREFIX选项,自定义库的安装位置,这样在项目编译后对应的头文件和库文件都会存放在该指定目录下。笔者这种选择安装位置是jthread_install文件夹。
然后点击Configure选择构建选项
构建工具选择自己电脑里安装的VS版本,笔者这儿是VS2019。下面的平台选项,因为笔者需要64位的库,所以也就默认empty了。
点击Finish,等待配置完成。
这个时候可以直接点击Generate构建项目,也可以修改上面的构建选项自定义。这儿默认构建静态库(推荐构建静态库)
在构建成功后,点击Open Project打开项目工程。
选择INSTALL项目进行生成,记得生成Debug版本和Release版本。
生成解决方案后就可以在前面自定义的库安装路径中找到生成的库文件了。当然,如果没有增加CMAKE_INSTALL_PREFIX选项,也可以在构建目录下(Where to build the binaries)找到生成的库文件。
3. 构建jrtplib
跟jThread库一样,选择源码路径,选择构建路径,添加CMAKE_INSTALL_PREFIX选项,点击Configure,然后你就可以得到如下的编译选项。
这儿有一些重要的选项需要注意。
3.1 jThread库依赖
JTHREAD_ENABLED选项,如果选择基于jThread要勾选,同时下面的JTHREAD_XXX 四个选项都有填上相关路径。
JThread_DIRINCLUDE_DIR是jThread头文件路径,因为项目中是这种格式引用头文件的<jthread/jthread.h>,所以我们需要包含倒jthread文件夹的上一级文件夹。
JThread_DIRLIB_DEBUG是Debug版本库文件路径
JThread_DIRLIB_RELEASE是Release版本库文件路径
JThread_DIR,根据jrtplib的作者的指导,这儿选择的是JThreadConfig.cmake文件所在的路径
3.2 静态库选择
JRTPLIB_COMPILE_STATIC选项,笔者这儿是默认勾选的,同时笔者也是希望构建静态库,因为静态库可以减少很多麻烦,比如当项目移动时,包含静态库的工程总是比包含动态库的工程少一些库文件路径问题。
3.3 构建选项值的问题
构建选项的value中,如果有路径,一律使用'/',而不能使用'\',否则在构建时会出现路径问题。
完成自定义后,笔者的构建选项如下所示。(ADDITIONAL_XXX的作用在此处看不出来,因为jThread的各种路径都在下面指定了)
点击Generate,在构建成功后点击Open Project打开工程,右键选择INSTALL项目,在仅用于项目中选择仅生成INSTALL。
如果没有选择仅生成,其他的项目也会生成,但是其他的项目是example,依赖于jsrtplib,会报错。
4. 使用
库文件都生成了,接下来就是拷贝头文件和库文件到项目中使用了,这儿可以直接参考jrtplib给出的example
标签:选项,jrtplib,windows,路径,选择,编译,构建,jThread From: https://www.cnblogs.com/unrealCat/p/17139302.html