当前位置: 首页 > wzjs >正文

网上买保险网站军事新闻俄乌最新消息

网上买保险网站,军事新闻俄乌最新消息,做网站资源管理是,wordpress 分页在前面的博文MinGW下编译nginx源码中,有介绍到使用compiledb工具在MinGW环境中生成compile_commands.json,以为compiledb是捕获的make时的输出,而nginx生成时控制台是有输出编译时的命令行信息的,笔者之前编译过ffmpeg的源码&…

在前面的博文MinGW下编译nginx源码中,有介绍到使用compiledb工具在MinGW环境中生成compile_commands.json,以为compiledb是捕获的make时的输出,而nginx生成时控制台是有输出编译时的命令行信息的,笔者之前编译过ffmpeg的源码,它不是完全输出编译时的命令行信息,而只是简单的输出CC XXX.o这样的信息,那compiledb能否正常生成compile_commands.json呢?为此笔者尝试了一下。

笔者编译开源源码时,为了不污染源码,一般喜欢单独创建一个build目录来编译,这也是开源界所提倡的。所以笔者在MinGW下编译ffmpeg源码时也是如此。要编译ffmpeg的源码,与大多数开源代码一样,需要先运行configure脚本,生成Makefile,再调用make来编译。

ffmpeg源码下建立build目录,并在其下执行:

$ ../configure --prefix=
$ compiledb make -j8

看是否会生成compile_commands.json,结果却生成不了。我以为真是从我们看到的屏幕信息中捕获的信息,于是我让它在编译时把命令显示出来:

$ compiledb make -j8 V=1

make的命令行参数V=1定义变量V让它显示详细信息,参见源码ffbuild/common.mak

在这里插入图片描述

在这里插入图片描述

Makefile规则中可以看到所有编译规则都是调用的COMPILE宏,再执行的相应的命令,如果没定义变量V则重写了BRIEF中所列的所有命令,调用printf命令 目标的格式显示,再执行相应的命令。
可以使用remake工具进行调试查看。在MinGW下使用命令:

$ pacman -S remake

安装remake。

build目录使用命令:

$ remake -X

调试Makefile,再使用expand COMPILE_C查看展开后的变量COMPILE_C

在这里插入图片描述

回到主题,使用

$ compiledb make -j8 V=1

依旧不能生成compile_commands.json,为此我还调试了compiledb源码,发现实际是解析到了结果,但是最后因为找不到实际的源文件,所以未生成compile_commands.jsonMinGW下编译ffmpeg源码时,在build目录下使用../configure生成的Makefile,是使用的绝对路径,而不是相对路径,MinGW下的Windows目录的绝对路径表示与Windows的本身表示的不一样,Windows本身的路径如:H:\OpenSource\ffmpeg\build,在MinGW下是/h/OpenSource/ffmpeg/build

从前面ffbuild/common.mak中的COMPILE宏中可以知道编译源文件时是使用了SRC_PATHSRC_LINK变量,使用remakep SRC_PATH命令查看位置,在ffbuild/config.mak:15

在这里插入图片描述
ffbuild/config.mak是由configure程序生成的,那需要在configure源码去找生成ffbuild/config.mak时的写入代码:

cat > ffbuild/config.mak <<EOF
# Automatically generated by configure - do not modify!
ifndef FFMPEG_CONFIG_MAK
FFMPEG_CONFIG_MAK=1
FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
prefix=$prefix
LIBDIR=\$(DESTDIR)$libdir
SHLIBDIR=\$(DESTDIR)$shlibdir
INCDIR=\$(DESTDIR)$incdir
BINDIR=\$(DESTDIR)$bindir
DATADIR=\$(DESTDIR)$datadir
DOCDIR=\$(DESTDIR)$docdir
MANDIR=\$(DESTDIR)$mandir
PKGCONFIGDIR=\$(DESTDIR)$pkgconfigdir
INSTALL_NAME_DIR=$install_name_dir
SRC_PATH=$source_path
SRC_LINK=$source_link

8106行开始写入,8121行使用了$source_path变量
在这里插入图片描述

查找设置$source_path变量的地方,4248行开始:

在这里插入图片描述
原来它只假定了源码的根目录使用configure命令和把根目录作为src目录使用configure命令两种方式的相对路径,其它都是使用的绝对路径。为了支持在子目录build下使用configure命令,添加:

elif test -f ../configure; thensource_path=..

在这里插入图片描述

再次运行

$ ../configure --prefix=
$ compiledb make -j8

这回正常生成compile_commands.json了。

当然了,如果只是想生成compile_commands.json,也可以直接在根目录运行:

$ ./configure --prefix=
$ compiledb -n make -j8

即可。这样就可以使用VSCode打开项目,在代码中正常跳转了!

总结下来,compiledb其实是可以正常生成compile_commands.json的,并且它并不是以我们在屏幕上看到的输出来生成compile_commands.json的。感兴趣的读者可以自行去看它的python源码。

如果对你有帮助,欢迎点赞收藏!

http://www.dtcms.com/wzjs/448858.html

相关文章:

  • 网购网站开发背景郑州做网站公司有哪些
  • 做一个自己的免费网站吗p站关键词排名
  • 惠安网站建设报价seo关键词排名优化软件怎么选
  • 简述网站建设的步骤海南百度推广代理商
  • 优书网下载广州做seo整站优化公司
  • 外贸网站建站那家公司好销售方案
  • 阳江网站建设指数基金怎么买
  • 手机建站cmsseo运营是做什么的
  • 武汉专业网站建设seo初级入门教程
  • 弄一个网站多少钱湖南竞价优化专业公司
  • 一个空间2个网站代码企业seo
  • 网上如何做任务赚钱的网站南昌seo教程
  • 花瓣网设计网站成都网站建设公司排名
  • 乐清 网站建设seo推广系统
  • 上海松江做网站的公司景德镇seo
  • 电脑网站制作教程2023年7月最新疫情
  • 河南省的网页制作seo优化排名工具
  • 长沙网站开发公盘多多网盘搜索
  • 鹤峰网站制作seo推广方法集合
  • 莱芜网站制作武汉官网优化公司
  • 清江浦区住房和城乡建设局网站百度关键词工具在哪里
  • 网站建设维护及使用管理办法网上怎么找客户资源
  • 三门峡做网站公司seo是指什么岗位
  • 东阳房产网赣州seo培训
  • 网站建设与管理题库深圳网站建设公司排名
  • 嵊州市建设银行网站找关键词的三种方法
  • 网站公司的客户怎么来长沙排名优化公司
  • 专业做招聘网站东莞网站推广营销
  • b2b电子商务网站开发怎么做电商平台
  • 网站建设与设计大作业快速排名方案