bouml的简易教程(中文)

2024-09-02 07:58
文章标签 教程 中文 简易 bouml

本文主要是介绍bouml的简易教程(中文),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


Bouml -教程

 

本教程主要为了帮助您第一次起用BOUML。在这里仅显露BOUML少数的特点,而BOUML完整描述参见其参考手册。

本教程必须按序阅读,因为我不会每次重复诸如调用菜单等一般性的命令。

 

启动

   当您执行BOUML出现下面消息,按确定(OK)按钮。但你将不得不定义你自己的有效的BOUML标识:(1~127中的整数)

 

      BOUML视窗显现(图样取决于使用的Qt版本,这里是在Linux下运行的2.4版本,与Windows版本兼容):

 

   bouml窗口由三个部分组成:

 

u       左边的子窗口是一个展示您项目的浏览器,可由鼠标或上下左右键进行导航。    黑体的字体表示该项是可修改的,当您没有文件写权限时则一个项是只读。

u       右下角的子窗口是用来显示/修改与当前所选项相关联的注释。

u       右上方的部分是用来显示/修改图表,这些窗口可以的最大化或最小化。

 

显然地,个别子窗的大小会发生改变,当把鼠标放在它们之间的分拆处时,可以更改窗口大小。注意:如果你有双监视器配置,更好的办法是设置环境变量BOUML_LIMIT_DESKTOP,参见此地

 

在此水平下你必须创建一个新的项目,或加载一个已经存在的项目。

 

创建一个新项目

这儿,我们创建一个新项目:在Project菜单中选择New菜单项,呈现一个文件对话框(它的外观取决于所用的系统和窗口管理器),请求输入项目名称,你必须选择一个目录用以存放项文件,并选择输入项目名字,我输入项目名为foo,放置在/ tmp目录之下:

 

 

在这种情况下BOUML /tmp下创建目录foo(\tmp\foo),并将某些文件(包括foo.prj

放置在/tmp/foo目录之下。当重新加载工程时(foo.prj),这些文件都会加载。

!注意:不要重命名或删除由BOUML产生的文件,以及目录本身!

 

 

接着显示一个新的对话框:

遵循以下的建议,通过Language菜单我为此例切换为C + +Java的语言(以后我们将看到为什么这样做):

该项目的名称显示在浏览器中,该项目是顶级包,其上点击鼠标右键产生的菜单:

你将看到,一个包(package)可能包含其他包和一些视图:用例视图(use case view),类视图(class view),构件视图(component view)和部署视图(deployment view)。

 

视图(View,)用例(Use case

Bouml在一个bouml工程中使用视图来组织和结构化模型元素和图。不同类型视图依据上下文提供不同的菜单,以列出在其中可以创建图和模型元素。若要定义用例,我们需要有一个用例视图(use case view) ,所以我们选择新的用例视图 (new use case view)

 

 

 

 

Bouml要求提供的视图名。在以后要想修改它,必须鼠标双击用例视图 (new use case view)

,或点鼠标右键出现菜单,从菜单中选择edit,则显示了用例编辑器

 

(Diagram)

要在此视图创建用例图(use case diagram) ,在用例视图上右击鼠标,弹出菜单,并选择

新的用例图(new use case diagram)

同样还要输入用例图的名字。要修改用例图,在用例图上右击鼠标键,显示一菜单[此菜单为元素的关联菜单,以后简称关联菜单],从菜单中选择edit。相对于非图项,在图上双击显示。

 

 

在图中添加元素

在用例图中创建并放置用例你有两种方法可选

u     在用例视图右击鼠标,在菜单中选择新的用例(new use case) ,然后从浏览器拖放到图中。

u     或点击图子窗口顶上的用例功能(椭圆)按钮,然后在图中某个点点击鼠标即可。

    .请注意,用例是包含用例图的视图中创建的,除状态机(states machine.)外,不论何种图皆与此类似。

    我们将用例的名字取为 Withdraw

要移动图中的use case,在use case上按鼠标左键,保持按下状态移动鼠标,用例名跟着用例移动,但用例名也可以独立移动。例如,将用例名放置在椭圆的中间。您也可以选中用例后使用键盘上的箭头移动。

 

创建一个名为Customer的角色如同你创建用例一样,结果如下:

 

请注意,一个角色(actor)其实是一个类,当板型是角色时,在浏览器中显示的图标是一个角色,否则是一个类。要改变板型,编辑类(在类上双击鼠标,或在类上点击鼠标右键出现的菜单,选择edit),从预定义列表中选择板型或输入一个新的板型。关于修改预定义的板型列表,请阅读参考手册。

用例可以改变大小:点击用例,移动的出现点即可。然而角色不能调整大小。

 

你有多种方法画出关联关系:UML的推荐(一条简单线条或有箭头),点击所需图标按钮,在角色上点击(不松开),移动鼠标到用例上,松开鼠标。

 

在最初的构建线条时,如果你在元素之外松开鼠标左键,线条变成折线。或在线条构建完成之后,在线上点击鼠标左键,拖动原线条亦变为折线。

要删除线上的一个点,双击此点,或右键单击此点显示菜单并选择remove from view菜单项。在线条的构建过程中,双击将终止构建。

同样方式在图中添加新元素,如下图(编辑依赖性以设置其板型)

 

正如你所看到的,在浏览器上可见到范化(generalizations)和依赖(dependencies)关系,它们关联菜单(在其上鼠标右键单击)允许浏览到你要找的目标。

如果您从WithDraw来编辑泛化关联,将有一个简单的对话框,这与角色之间的泛化关系不是一回事,因为继承会产生源代码:一个角色是一个类。

 

删除图中的一个元素

从图中删除一些元素,选择要删除元素(左键点击),然后按DEL或从关联菜单选择remove from view。请注意,不可能的删除图中的标签(label)。

删除/恢复浏览器中的元素

要从模型中删除元素,按ctrol+d或从关联菜单选择delete from model,,你也可以在浏览器中如此做。:例如删除的Administrator  

 

  显然,Administratorgeneralization从图中消失,但在浏览器中并非如此:它们只是加上删除标记,相对应的菜单的也发生了改变。你可仅恢复(undelete) Administrator或者它和它的全部子孙(递归性恢复)。当Administrator被删除时,generalizationr 没有关联菜单,在Administrator被删除时,是不可以单单恢复它的子孙。

   注意:所有删除的元素是不保存的,如果你重新调入工程,被删除的元素一定丢失了。

   恢复角色和它的子孙,它们将不会在图中。

   在图中再插入角色,使用拖放操作,把角色从浏览器中拖到图子窗口中,或点击图中的角色图标,再到图中的某一点点击,从所建议的列表中选择Administrator 。子孙并不自动绘制,但在类图中可能自动绘制(依赖于绘制设置 drawings settings)。要求绘制generalization,使用拖放操作从浏览器中拖到图中。

 

绘制设置(drawing settings)

通过设置drawing settings可以改变颜色和其它绘制特征。如果你总喜欢蓝色的用例,最好的方法是在工程关联菜单(也就是在浏览器的foo)上选择 edit drawing settings.转到最后一个标签(tab),改变默认的用例的颜色(default use case color)。如果你在一个子级别上如此去做,例如在图上,新值的有效的范围将限于所选级别以及它的子孙,若此级设置的值是默认值,则继承上一级别所给出的值,除工程级别例外,因为它已经没有上一级。

这样,我们在工程一级修改用例的颜色为蓝色,则所有用例都是蓝色。我们在WithDraw上调用相关联的菜单,选择 edit drawing settings,将颜色(黙认值)改为绿色。

 

 

  现在,在浏览器中的图上的关联菜单上,选择 duplicate (复制), 如此将开始复制此图,显示一对话框,要求为此复制品输入一个名字,按OK按钮,将打开此新图,它是一个复制品,编缉它的drawing settings ,使其用例为黄色显示,结果看到:

 

在图中选中元素

要在图中选中几个元素,以便于移动它们:

n         control+a  选择全部元素

n         contrl 键按下时,鼠标左击允许增加点元素或者从所选择的元素集中删除点元素

n         在任何元素之外的空白处鼠标左键按下并移动,它将定义一个矩形区域,其包含的元素都将选中。

n         在一个对象的菜单上选择 select linked items (链接在一起的) 菜单,允许你选择所有链接在一起的元素,实际上是吗(这里是所有的元素)?

 

z-dimension

Diaggram2 上增加和删除元素,使之如是(图被最大化)

增加一个 subject ,调整尺寸,使之如是:

现在试着增加从 Transfer funds Card identification 依赖性关联:你能吗?发生了什么?

因为你在Card identification 之后增加 subjectsubjectuse case上面,BOUML考虑你试图建立从Transfer funds subject 依存关系。

 

如果你改变subject 的颜色,可看的更明白。

不要惊慌,相对其他UML工具,您不必重做所有工作,仅只须调用subject的关联菜单,选择lower,现在您可以增加依赖性了。

 

放大,窗口尺寸,图的格式

当你打开一个图时,显示比例设为100%,窗口的尺寸不定。

当你改变比例时(使用小箭头或者直接在spin box写入值[实际上是回到100%]

箭头的尺寸不会改变,使之在小比例时可见,当比例较大时,一般不使用箭头。

虚线表明了图的范围(画布的尺寸),你在虚线外你能看到一些东西。黙认的图的格式是欧洲ISO-A4.要改变图的格式,从图的关联菜单中format (在浏览器中图的关联菜单不允许如此做)。格式‘A’相对于美国字符,‘B’相对于美国更大些,而‘C’则更大。设置图的格以便于以后使用,在主窗口的Miscellaneous菜单中选择子菜单Diagram default format

  fit% 使比例更大些,以便于看到图中的所有元素,比例的大小依赖于图子窗口尺寸。亦可在图的关联菜单上选择optimal scale 菜单项。

与此相对,在关联菜单上选择optimal window size,或通过按钮,你能够自动改变图子窗口的尺寸,以便在当前比例下看到所有元素。

关闭图,接着打开图,窗口的尺寸和比例将由默认值重置。要保存当前窗口的尺寸和比例,以便你在下一次重新打开时使用,可以使用图子窗口的关联菜单,选择set preferred size and scale 菜单项(浏览器中的菜单不可能使用)。

   

输出图的图片

这儿有几种方法输出图的图片:

l         打印:如需,打开图以显示图,使用bouml窗口左上方的打印机图标按钮。

l         复制:粘贴到其它程序:如需,打开图以显示图,可以使用图的关联菜单,选择opy visible picture part 菜单项(浏览器中不可能),可视部分是图的可见部分,依赖图子窗口的滚动条的位置。要复制所有的元素,甚至不可见的元素,选择copy optimal picture part.菜单项。

l         保存图像为PNG文件:如需,打开图以显示图,可以使用图的关联菜单,选择save visible picture part (png) 菜单项(浏览器中不可能)。要得到所有的元素,甚至不可见的元素,选择save optimal picture part (png).菜单项。

l         保存图像为SVG文件:如需,打开图以显示图,可以使用图的关联菜单,选择save visible picture part (svg)菜单项(浏览器中不可能)。要得到所有的元素,甚至不可见的元素,选择save optimal picture part (cvg) 菜单项。

l         使用plug-out,例如HTML 生成器。在此情况下,一个输出的图不是一个打开的图,保存部分的比例和尺寸是默认值,除非你使用了set preferred size and scale 做了特别说明。

 

子包、类视图、图图和类

现在我们想设计类以产生代码。

为此目的,我们首先创建一个类视图(class view),为什么不?我们不想将此视图直接放在项目包中。从项目的关联菜单中选择new package,菜单项给包命名Package3 Package3 关联菜单上选择 new class view  菜单项,给类视图命名为 Class view4  

要定义一类,类图不要一定需要的,除非需要加入关系。通过类视图创建一个类图,打开此图,如是:

 

 

按类图标的按钮,在图的某一个地方点击(也可在浏览器中使用class view菜单创建一个类),给类命名为C1

因为角色是类,它们可以加入到类图中。使用拖动方法,从浏览器中拖到图子窗口中;或者点击类图标,显示一对话框,选择一个角色 Administrator ,角色类以一个角色方式绘制,对于具有Actor范型的类,这是默认绘制方式(这依赖于类的drawing settings设置,其它的特殊类是关于范型control,boundary entry):

 

然而在正常情况下,角色目的不是用于产生代码的。在生成设置中在类级别上的actor范型,目标语言在产生过程中忽略actor。以下为取消此限制,编辑generation settings ,转到 stereotype 标签,在stereotype=actor行内,用C++和其它语言设置取代 ignored

 

增加属性和操作

我们想定义一个命为att的属性和一个命为oper的操作。从类的关联菜单上选择执行add attribute,然后选择执行add operation 当你通过图增加类的成员时,调用相关的编辑器,而不是浏览器。类的成员可见,类的图像如是:

因为默认的可见性由class settings 设置(属性为保护的而类是公开的)。而class settings 而在类视图级或包级别进行设置,遵循和drawing settings 同样的原则。

 

编辑属性

一旦决定att是一个整数,我们必须编辑此属性,可以有几种方法:在浏览器上双击属性;或者在浏览器调用此属性的关联菜单,选择edit; 或在图上调用此属性的类的关联菜单,选edit attribute,再选择att , 你将看到一对话框:

 

第一个标签关心的是UML特征,一个属性默认为一个示例的成员(不是类的成员),不是易变的(volatile),也不是只读的(read-only)。其它的每一个标签连接到一个特定语言:使用bouml,你可以同时使用几种语言进行设计。例如HTML生成器是由C++Java两者来实现的。

设置其类型为int ,通过从先前定义好的类型列表(通过generation settings可修改)中选择一个,或直接输入int

转到C++标签(在C++上点击):

正如你所见,C++的可见性默认是遵循UML的一个值,但这不强制性的,有助于那些具有不相同的可见性的情形(C++Java,并且C++里属性可能是mutable

declaration 之前的文本是可修改的,而在result after substitution [替换后的结果]之前的文本则是不可修改,此文本由C++的生成器产生的源代码(假定你不修改它!)。除了由$()标记的关键字和由@()标记的用户的特性(用户属性名-值对集合)外,所有其它的字符将按原样生成,包括新行。$(type) 将由 int 替换而@(name) 将由 att 替换,这对你来说并不难理解。此两者的设置在UML标签内进行。这也意味着,如果你用 aze 替换$(type),在C++中关于att 的生成类型将是 aze  等等。。。

也许,你有自己的编码规则,例如在C++中属性的名字必须以‘_’开头,当然你可重新为属性命名为 _att 但在类图中‘_’是不太美的,较好的方法是在$(name)之前加上‘_’:

转到Java 标签:

Java标签内,应用相同的原则。

在这里是不可能看见IDLPhp的定义。为什么?回想一下,在本教程开始时我请求你在语言菜单上设置C++Java选中开关,这样的话所有未选中的语言将被隐藏。按OK按钮关闭对话框,通过Languages菜单,选中所有语言,再来属性,转到IDL标签。

 

声明(declaration)是空的,这还是因为未在Languages 上设置Idl。按Default State declaration 按钮,我们有:

首先,的可见性是私有的而不是保护的,因protectedIDL中不存在。

其下,$(type) long 替换,而不是int, 这也是因为在IDL中不存在int 类型,而最好目标类型是long, 太奇了!

它们都是由BOUML自动地转换类型,例如你在UML中选择any类型,你能在C++中得到Void类型,Java中得到Object 类型,而在ODL中得到 any类型。显然的这些转换不是硬编码完成的,而是可以用 generation settings 进行设置的。

转到Php标签,请求其默认的声明:

这是Php5的定义,如果你想使用Php4,最好的方法是针对package 改变可见性,则其定义将是:

关键字的定义(给出一一个默认的样子)也能够通过generation settings 进行修改。它允许你在C++的代码内在属性名前加上‘_’,如上所述。更多的说明,参阅手册。备注:当你更改generation settings ,已经存在的元素的定义并不改变。

OK 校验更改的合法性。

类绘制设置 Class drawing settings

在类图中,仅可见到属性名和操作名,即见不到类型也不见其可见性,调用类的关联菜单,改变三个drawing settings 如下:

类的图像现在是这的:

不要犹豫,试一试其它的绘制设置,细节参阅参考手册。

关系

我们想增加一个从C1 指向 Administrator 单向关联:在图子窗口的顶上点击相应的图标,如同用例图中一样增加绘制此关系。

正如你所见,关联加入到了浏览器中,默认的,它的名字是编辑此关联:

如同attributes 一样,我们有UML标签和其它语言标签。

因关联是单向的,所以仅一极(关联的一极)是可编缉的。如同属性和操作,默认的可见性由Class settings 设定。角色名将产生成员名,我们发现已经存在属性的标志:从生成代码的观点来看,一个关联和属性之前没有差异。

给关联命名Admin ,转到C++标签:

默认情况下,在C++代码中,一个关联和一个聚合产生一个指针,由值给出的聚合将不会产生指针。显然,其默认的定义可通过generation settings 来改变。

转到Java 标签:

再转到Php标签:

再转到IDL标签:

 

回到UML标签,首先改变关系的类型为具有双向的关联,然后做其它的修改,使之如是:

转到C++标签,然后按 Default declaration 按钮,则有两极(两端):

 

转到Java标签,然后按 Default declaration 按钮,则有两极(两端):

转到IDL标签,然后按 Default declaration 按钮,则有两极(两端):

正如你所见到的,默认的定义依赖于关联的类型和关联的重数,当然这些默认值可通过generation settings 进行修改。

UML的范型相对于各语言来说都是屏蔽的(保护的),其实现可以通过generation settings 进行修改。下面你可见到,UMLvectorC++中产生一个向量Vector,而在IDL中产生序列sequence

OK按钮,看图:

因为,现在关联是双向的,在浏览器中C1 and Administrator 中都可见到此关联。(我将它们标记为红色)

定义结构、联合、类型定义(typedef),枚举

要定义一个C++ISDLstruc,使用类范型 struct , 使用Default declaration 按钮,针对相关的语言编辑类。在Java 中的struct 是通过一个标准的类来实现的,当然在UML的类范型到给定的语言的映射可以通过设置generation settings来完成,请看下面的对话框,并参阅参考手册。

 

要定义一个C++IDL的联合,针对Class 使用Union 范型:

 

例如要在C++中定义typedef T,它是指向C1的一个指针:创建类T,绘制一个从TC1的依赖关系。

编辑此类T,设置其范型为typedef:对话框中发生改变指向其基类型。

转到C++标签:

 

当然,依赖性不是强制的,例如可以定义 typedef int turlututu

$(type)$(name)之间増加一个’*’

通过enum 范型和  enum_pattern 范型以支持枚举。

创建一个类E,编辑E,设置其范型为enumOK。在浏览器中调用类的关联菜单,选择add item 并给一个名字a , 接着,重新调用类的关联菜单,选择add attribute ,并给一个名字 b。编辑类E,转到C++标签,请求黙认的声明:

正如你所见,$(item) 产生 a(这里’…’指明仅显示其名,而不是全部的定义)而不是b,这是因为在C++中,一个枚举仅仅有项,属性和方法都是不合法。

转至Java 标签,在至少JDK5的条件下,它是一个枚举。

 

b是由$(member)产生的,因为它的范型是attribute ,允许分开项目和属性。

转到Php标签,并不像C++那样,b不显示。

转到IDL标签,并不像C++那样,b不显示。

同样的方法,如果我们在enum中定义一个方法,则这个方法将在C++PhpIDL实现中没有此方法。

现创建类OE,编辑OE,设置其范型为enum_patternOK。查看OE关联菜单,它仅能增加itemsEOEC++IDL之间没有差异,但在Java里是完全不同的,因为这种类型的enum 是由类支持的。

 

 

我建议你编辑EOE类中a, 要所有语言中查看其定义。

代码生成,部署视图,artifact

也许你在类的关联菜单中已经见过 Generate ,对于C1,试一试生成代码:无论何种语言,你将有下错误“C1:does not have associated artifact.”在UML2 artifacts表示生成的文件,源文件,代码,库,执行文件,jar等,。。。。

[以下内容在最新版BOUML已经不存在,略过]


http://blog.chinaunix.net/uid-9525959-id-2001605.html

这篇关于bouml的简易教程(中文)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129427

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.

【Shiro】Shiro 的学习教程(三)之 SpringBoot 集成 Shiro

目录 1、环境准备2、引入 Shiro3、实现认证、退出3.1、使用死数据实现3.2、引入数据库,添加注册功能后端代码前端代码 3.3、MD5、Salt 的认证流程 4.、实现授权4.1、基于角色授权4.2、基于资源授权 5、引入缓存5.1、EhCache 实现缓存5.2、集成 Redis 实现 Shiro 缓存 1、环境准备 新建一个 SpringBoot 工程,引入依赖:

解决Office Word不能切换中文输入

我们在使用WORD的时可能会经常碰到WORD中无法输入中文的情况。因为,虽然我们安装了搜狗输入法,但是到我们在WORD中使用搜狗的输入法的切换中英文的按键的时候会发现根本没有效果,无法将输入法切换成中文的。下面我就介绍一下如何在WORD中把搜狗输入法切换到中文。

Windows环境利用VS2022编译 libvpx 源码教程

libvpx libvpx 是一个开源的视频编码库,由 WebM 项目开发和维护,专门用于 VP8 和 VP9 视频编码格式的编解码处理。它支持高质量的视频压缩,广泛应用于视频会议、在线教育、视频直播服务等多种场景中。libvpx 的特点包括跨平台兼容性、硬件加速支持以及灵活的接口设计,使其可以轻松集成到各种应用程序中。 libvpx 的安装和配置过程相对简单,用户可以从官方网站下载源代码