美文网首页视频编码学习之路
vlc-libde265 Makefile.am 试读

vlc-libde265 Makefile.am 试读

作者: 团不慌 | 来源:发表于2018-01-17 15:48 被阅读13次

在学习 vlc-libde265 的过程中想要尝试对 Makefile.am 进行一下解读,由于篇幅太长单独整理一下。


vlc-libde265 Makefile.am 试读

Makefile.am文件其实和Makefile文件很类似,只不过是一编译规则更加抽象的编译文件。
先从一个部分的文件看看 Makefile.am 这类文件书写的一般规律:

lib_LTLIBRARIES = libde265_plugin.la

CFLAGS = -DVLC_MODULE_COPYRIGHT="\"Copyright \(c) struktur AG\""
CFLAGS += -DVLC_MODULE_LICENSE=\"LGPL\"

libde265_plugin_la_CFLAGS = -DMODULE_STRING=\"de265\" $(libde265_CFLAGS) $(vlc_CFLAGS)
libde265_plugin_la_CPPFLAGS = -DMODULE_STRING=\"de265\" $(libde265_CFLAGS) $(vlc_CFLAGS)
libde265_plugin_la_LIBADD = $(libde265_LIBS) $(vlc_LIBS)
libde265_plugin_la_LDFLAGS = -avoid-version -module -export-symbol-regex ^vlc_entry $(libde265_LDFLAGS) $(vlc_LDFLAGS)
libde265_plugin_la_SOURCES = \
   src/codec/libde265dec.c \
   include/libde265_plugin_common.h

从第一行可以看出这里要生成的是一个名叫 libde265_plugin 的共享库(lib_LTLIBRARIES 是静态库的定义)。
后面两行 CFLAGS 主要是用于指明 C 语言编译过程所用到的头文件。
之后看起来一大堆的配置仔细看其实很快就能发现:每个变量都多了 libde265_plugin_la_ 的前缀。
没错!这一堆设置的就是 libde265_plugin.la 编译时的参数啦:

  • xxx_CFLAGS: C 语言编译时的头文件
  • xxx_CPPFLAGS: C++ 语言编译时的头文件
  • xxx_LIBADD: 编译时需要的其他库
  • xxx_LDFLAGS: 编译器会用到的一些优化参数
  • xxx_SOURCES: 生成时用到的源文件

后面的几个模块其实也都大同小异,也就是说我们可以通过这样的模式找到他生成的每个文件具体使用了哪些 src 文件:

Lib Name Sources
libde265_plugin.la src/codec/libde265dec.c
include/libde265_plugin_common.h
libde265demux_plugin.la src/demux/libde265demux.c
include/libde265_plugin_common.h
libde265_mkv_plugin.la src/demux/vobsub.h
src/demux/mp4/libmp4.c
src/demux/mp4/libmp4.h
src/demux/mkv/chapter_command.cpp
src/demux/mkv/chapter_command.hpp
src/demux/mkv/chapters.cpp
src/demux/mkv/chapters.hpp
src/demux/mkv/demux.cpp
src/demux/mkv/demux.hpp
src/demux/mkv/Ebml_parser.cpp
src/demux/mkv/Ebml_parser.hpp
src/demux/mkv/matroska_segment.cpp
src/demux/mkv/matroska_segment.hpp
src/demux/mkv/matroska_segment_parse.cpp
src/demux/mkv/mkv.cpp
src/demux/mkv/mkv.hpp
src/demux/mkv/stream_io_callback.cpp
src/demux/mkv/stream_io_callback.hpp
src/demux/mkv/util.cpp
src/demux/mkv/util.hpp
src/demux/mkv/virtual_segment.cpp
src/demux/mkv/virtual_segment.hpp
include/libde265_plugin_common.h
include/vlc_codecs.h
libde265_mp4_plugin.la src/demux/mp4/id3genres.h
src/demux/mp4/libmp4.c
src/demux/mp4/libmp4.h
src/demux/mp4/mp4.c
libde265_ts_plugin.la src/demux/dvb-text.h
src/demux/ts.c
src/mux/mpeg/csa.c
src/mux/mpeg/csa.h
src/mux/mpeg/dvbpsi_compat.h
include/libde265_plugin_common.h
include/vlc_codecs.h

一下这么多源文件看起来是有点多,那我们不妨暂时先只看一下生成的库都是什么在什么条件下才进行的:

Conditions Lib Name
Default libde265_plugin.la
Default libde265demux_plugin.la
! HAVE_VLC_HEVC libde265_mkv_plugin.la
! HAVE_VLC_HEVC_MP4 libde265_mp4_plugin.la
! HAVE_VLC_HEVC_TS libde265_ts_plugin.la

明显我这里写的感叹号不是想告诉你我有多惊讶...也就是说只有在某些条件不满足的情况下才会对这些库进行编译,从宏变量名字其实就可以大致了解它的作用了:如果现在没有这些模块,则针对性的编译出他的功能。再结合库的文件名,它们的作用就非常明白了:

Lib Name 作用
libde265_plugin.la H.265 解码模块
libde265demux_plugin.la H.265 解复用模块
libde265_mkv_plugin.la H.265 处理 mkv 格式模块
libde265_mp4_plugin.la H.265 处理 mp4 格式模块
libde265_ts_plugin.la H.265 处理 TS 格式模块

真的是这样吗?嘿嘿,其实我也不知道。目前这些推断仅仅是通过一个 Makefile 文件推断出的,是否正确还得继续看看他们的源文件到底怎么写的。

相关文章

  • vlc-libde265 Makefile.am 试读

    在学习 vlc-libde265 的过程中想要尝试对 Makefile.am 进行一下解读,由于篇幅太长单独整理一...

  • 【新书试读】《理财就是理生活》第2章(一)

    新书试读:【新书连载】《理财就是理生活》前言 新书试读:【新书试读】《理财就是理生活》第1章(一) 新书试读:【新...

  • 啊啊啊

    第三方士大夫士大夫所发生的试读试读 第三方士大夫士大夫所发生的试读试读第三方士大夫士大夫所发生的试读试读第三方士大...

  • Makefile.am 规则和实例详解

    转载自:Makefile.am 规则和实例详解--鹏博客 编写Linux C 程序的时候,自己来写Makefile...

  • 试读

    试读

  • 【新书试读】《理财就是理生活》第1章(二)

    新书试读:【新书连载】《理财就是理生活》前言 新书试读:【新书试读】《理财就是理生活》第1章(一) 第1章 挣钱一...

  • 【转】GNU autotools(五)编写Makefile.am

    1. 简介 Makefile.am是比Makefile更高层次的规则,只需指定要生成什么目标,它由什么源文件生成,...

  • 试读

    “疼吗?” “不……” “这样呢?” “也不……” “这样呢?” “啊——疼!” 急诊室里传来一个男人鬼哭狼嚎的声...

  • 试读

    正文 、1 糟糕,麻烦大了…… “听清楚了?”舒玫挂了电话,皱眉看着已经瘫软在地上的白溪,“如果你做不到……”...

  • 试读

    、第1章 《撩他入怀》 文/倪多喜 2018.10.10 “宋染!不听课就给我滚出去!” 宋染刚趴桌子上打了个盹儿...

网友评论

    本文标题:vlc-libde265 Makefile.am 试读

    本文链接:https://www.haomeiwen.com/subject/haquoxtx.html