
请在git.enlightenment.org上报告错误/问题
EFL是用于处理开发人员可能拥有的许多常见任务的库集合,例如数据结构,通信,渲染,小部件等。
EFL内部有许多组件。他们还构建了各种东西,例如共享库,可加载的插件模块以及二进制可执行文件。不同的元素最终也会被不同的许可。以下是组件,他们所做的工作和许可。
所有库源都在SRC/ LIB/ Directory中。所有二进制文件均在SRC/bin/中。所有可加载模块均在SRC/模块中/。所有数据文件都在数据/目录中。许可详细信息在复制和许可/目录中列出。 PC/ Directory保留安装的所有软件包配置文件,以帮助开发人员针对EFL构建。
有关更多文档,请参阅:
www.enlightenment.org/doc
EFL主要是在Linux(GNU/Linux)上开发的,只要提供依赖项,就应该在大多数分布上使用。它也已在Windows上进行编译并运行(使用MSYS2 + MINGW -W64) - 请参阅Windows Docs,Mac OS X,FreeBSD和NetBSD。
Ecore:
BSD 2级许可证
这是核心主环,系统事件和执行层。这将处理运行主循环,与外部数据和计时源集成(系统时钟,文件描述符,系统信号),并产生事件队列,行走该排队并将事件派遣到适当的回调。
Ecore Audio:
BSD 2级许可证
该库为音频播放和录制提供了API。它使用下面的脉冲音频来处理混合和策略。现在不应将其视为稳定的API,因为它依赖于EO和EO尚未被视为最终确定。
生态可可:
BSD 2级许可证
这提供了围绕Max OS-X可可API的包装器/抽象来帮助MAC移植。
Ecore Con:
BSD 2级许可证
这提供了与主环集成的完全基于事件的TCP/UDP和UNIX域套接字API。这意味着没有阻止发送或接收数据,支持“无限发送缓冲区”,并由Ecore Con进行存储和载具。它还支持SSL加密在相同的连接,证书验证,HTTP连接使用情况(获取,帖子等),异步DNS查找的情况下透明地打开或不打开。
Ecore Evas:
BSD 2级许可证
这用作显示目标(X11,Wayland,框架缓冲区,OSX,Win32等)和EVA之间的胶水。它为EVA创建/提供了一个目标,可以将EVA渲染到(窗口或表面等),并将输入事件(键盘,鼠标,多点触摸)馈入EVA,然后选择目标对象并调用回调。它还提供包装器/胶水来操纵窗户/表面。
Ecore FB:
BSD 2级许可证
这提供了虚拟终端分配,访问和处理,框架缓冲区信息,键盘,鼠标和触摸的原始输入处理(通过TSLIB)。
生态文件:
BSD 2级许可证
这提供了文件访问便利性API,用于执行简单的文件操作,例如重命名,副本,清单目录等。它还支持文件更改监视和URL下载。
Ecore IMF:
BSD 2级许可证
这是一个输入方法抽象框架,可让EFL与Scim,Ibus,Wayland和Xim等事物进行交谈。这允许使用中文,日语和韩语等语言进行复杂的文本输入。
Ecore IMF EVA:
BSD 2级许可证
该库胶合输入方法支持来自Ecore IMF和EVA的支持。
生态输入:
BSD 2级许可证
这是一个通用输入层,其中多个显示系统可以以相同格式与事件队列发布事件。
生态输入EVA:
BSD 2级许可证
这将事件从Ecore输入路由到给定的EVA帆布中,然后将事件进一步路由到目标对象和回调。
Ecore IPC:
BSD 2级许可证
这充当了Ecore Con顶部的一层,该图层处理整个IPC消息数据包,处理标题Delta压缩和可移植性,并确保在一个单一的IPC消息中收到整个消息,无论有效载荷数据大小如何。整个API的事件几乎完全像Ecore Con,因此它支持所有运输层Ecore Con支持。
Ecore SDL:
BSD 2级许可证
这是SDL周围的包装器/胶水,以处理SDL窗口以及从SDL的输入事件,并将其绑在生态主环和事件队列中。
Ecore Wayland:
BSD 2级许可证
这是一个胶水/包装库,可以将EFL连接到Wayland库,以将它们绑在Ecore Main-Loop和活动队列中。
Ecore Win32:
BSD 2级许可证
这是Windows Win32 API周围的胶水/包装器,将它们绑在生态主环和活动队列中。
Ecore X:
BSD 2级许可证
这是一个包装/交易Xlib的图书馆,使与X11打交道减轻痛苦,更少的步法,并且可以将其粘在生态主流和事件队列中。
Edje:
BSD 2-CAREASE许可证(除了GPLV2的EPP二进制文件除外)
这是一个图形事件,输入,主题,动画和主题抽象库,用于将许多UI/UX元素放入数据文件(称为EDJ文件)中,该元素定义了如何对传入事件/信号做出反应,并定义动画时间线,状态,相对可扩展的布局等。它带有一个编译器,该编译器将源“ EDC”文件编译到“ EDJ”文件中(实际上只是由EET管理的数据文件)。这些“ EDJ”文件是完全便携式的,可以像JPEG或PNG一样可移植任何OS/架构。
欧洲东部时间:
BSD 2级许可证
该库是一个数据存储,编码和解码库旨在非常紧凑,快速且易于使用。它可以将数据结构直接从内存中序列化,并将其序列化到磁盘,然后将它们直接序列化回到内存中的相同数据结构,在1个呼叫中为您处理分配和内存的分配和内存群体。它也处理指示器,链接列表,阵列和哈希表的间接方向,因此几乎可以轻松地保存并加载任何级别的数据结构复杂性。它用于EDJE的“ EDJ”文件以及启蒙,基础和术语中的所有配置。它也支持通过SSL,签名文件以及各种压缩技术的数据加密。它还以无损或有损形式的图像数据进行编码和解码。
Eeze:
BSD 2级许可证
该库是发现传感器的硬件接口以及可移动媒体等等的抽象。
EFL:
BSD 2级许可证
这只是一些核心通用标题数据,例如EFL的常见版本编号以及如何曝光EO API。
efreet:
BSD 2级许可证
该库提供了用于处理freedesktop.org标准的代码,例如.desktop文件,XDG菜单,图标搜索路径等。它提供了一个中央守护程序,可以处理监视库与之交谈的更改,并且守护程序处理库读取的本地高速缓存文件。
Eina:
LGPL V2许可证
该库为常见事物提供低级例程,例如链接列表,散布阵列,可生长的阵列,基本字符串缓冲区,共享字符串令牌,mmaped()文件访问,线程抽象和锁定,内存池,纸条片段,折线段,迭代器,迭代器,迭代器,矩阵,矩阵,矩阵,一般数据模型,红色/黑树,红色/黑树,Quad-quad-trees,a Simple sax x x x xml和a pars xml和a。
EIO:
LGPL V2许可证
这是用于执行磁盘I/O的异步I/O库,而无需阻塞。
Eldbus:
LGPL V2许可证
这是DBUS访问库,可让您创建DBUS服务以及客户端。这种dbus中的胶水进入主环,因此所有访问都是异步的。
胚胎:
小许可(与ZLIB许可相同)
这是一个类似C的小型语言编译器和字节代码解释器库。这用于在Edje中拼写。该代码基于典当/小语言的原始来源,但已使便携式(固定的Endianness问题)和64位问题固定,并且经营时间库被重构为极小。
情感:
BSD 2级许可证
这是围绕GSTREAMER 1.x可插入解码器库的包装器,该胶水在解码器库中,并将其输出到智能EVAS对象中,该对象将在视频播放时为您显示播放,并提供更高级别的控制措施,以寻求,播放,播放,播放,查询和查询流式流,无论后端使用了无论多次使用。
EO:
BSD 2级许可证
这是EFL 1.8并依赖于EFL的核心对象系统API。 API尚未敲定,因此在EFL 1.8中不依赖它,但是将来的EFL版本将锁定。
该对象系统执行简单且多重继承,重新封闭,强烈和弱的参考,对子对象的自动删除,将回调处理用单个路径统一,并抽象对象指针是间接的表格查找,以提高运行时的安全性。
电子物理学:
BSD 2级许可证
该库在子弹物理库周围提供包装器,使其可以直接与EVA对象链接,并控制其行为,就好像它们是真实的物理对象一样。现在,默认情况下这是禁用的,因为任何事物都很少使用。
Ethumb:
LGPL V2许可证
该库为缩略图守护程序以及缩略图守护程序本身提供了核心API。 Ethumb客户与Ethumb对话,将缩略图生成传递到中心位置,以不同步。
Ethumb客户:
LGPL V2许可证
这是Ethumb的客户端一部分,它为客户提供了API,供客户要求Ethumb缩略图生成或找到缓存的文件缩略图。
伊娃:
BSD 2级许可证
这是EFL的核心渲染和场景图抽象库。它管理一个状态的2D场景图,该图定义了所有画布的整个内容。这为许多显示系统提供了渲染的后端,例如X11,Windows,Wayland,Frame-Buffer等。通过许多渲染API,例如OpenGL,OpenGL-ES 2,以及快速准确的纯软件实现。
邪恶的:
BSD 2级许可证
该库充当Windows的移植库,可提供EFL所需的MingW32中缺少的LIBC调用。它在内部使用,没有符号是公开的。
默认情况下,EFL需要C ++编译器。 C ++主要存在于诸如子弹和我们的C ++绑定之类的C ++库的接口。
默认要求:
在Linux上,您可能还需要Wayland支持。这使得对EFL的支持能够针对Wayland支持客户应用程序。做这个供应:
-Dwl=true对于更现代的FrameBuffer支持,您可能需要DRM/KMS渲染支持,因此可以启用。这也是您想要的启蒙运动中的Wayland Compositor支持,因为它希望能够通过原子缓冲区交换来渲染现代的Framebuffer目标。为此提供:
-Ddrm=true传统的FBCON支持也存在,但是您可能不再想使用它,因为它不再维护。这支持了基本的键盘 /fb和键盘 /输入键盘和鼠标的输入,以基本的方式支持基本的帧缓冲器。启用此功能:
-Dfb=true您可能需要使用以下方式更改EFL的安装前缀:
--prefix=/path/to/prefix如果未给出的默认前缀为“/usr/local”。许多人喜欢使用/opt/e或/op/opt/efl或/home/home/用户名/软件等前缀。
您可以通过设置CFLAGS环境变量(和CXXFLAGS )来影响编译优化,调试和其他因素。请注意,要确保ABI稳定性,您应该使用完全相同的CFLAGS / CXXFLAGS来用于EFL的所有构建以及依赖于它们的任何应用程序 /库。
可以使用许多其他配置选项,但是通常,除非您希望破坏东西,启用或禁用事物不是一个好主意。默认值经过良好的测试,上述建议的选项也经过了很好的测试。走得更远,您的里程可能会有所不同。禁用功能是打破EFL功能的好方法,因此不建议在不理解含义的情况下弄乱这些功能。已仔细考虑默认值以提供完整的功能,因此用户不会缺少任何功能。
Meson是用于此项目的构建系统。有关更多信息,请参阅Mesonbuild.com
您将需要安装正常的构建工具,例如编译器(例如GCC或Clang),PKG-Config,Ninja,如果您的发行版将开发标头(例如Libc6-dev)(例如Libc6-dev)等,则任何相关的软件包-DEV或软件包Devel软件包,等等。
根据依赖关系的位置,您可能必须设置PKG_CONFIG_PATH环境变量:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig另请注意,有些分布希望在图书馆位置添加额外的拱形目录,因此您可能还必须有更多的类似:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig您将需要确保目标库目录(例如/usr/local/lib在您的/etc/ld.so.conf or/et.conf or/et.so.so.conf.d/文件中,以及安装了安装任何安装您重新运行ldconfig库的内容后,请参阅ldconfig and ldconfig and ld.so.conf上的相关文档,以获取您的分发。
您可能还需要在环境变量路径(请参阅壳路径变量上的文档)中添加目标bin dir,例如:
export PATH=/usr/local/bin:/usr/bin:/bin/usr /local中的正常汇编:
meson . build
ninja -C build
sudo ninja -C build install对于梅森构建通用选项:
meson --help对于支持项目特定选项的列表:
cat meson_options.txt设置1个或多个项目特定选项:
meson --prefix=/path/to -Doption=value [-Dother = value2] [...] . build显示当前配置:
meson configure build以上只有在完成以下操作之后才能工作:
meson . build如何清理构建和配置并开始新鲜:
rm -rf build如何制作dist tarball并检查其构建:(必须从git树克隆中进行操作,并首先对git进行所有更改)
ninja -C build dist如何更改前缀:
meson --prefix=/path/to/prefix . build如何在特定目标目录中安装包装:
DESTDIR=/path/to/destdir ninja -C build install如何使用详细输出构建(完整命令运行):
ninja -C build -v注意: NVIDIA OpenGL-ES/EGL似乎有错误和性能问题。除了带有OpenGL-ES/EGL的NVIDIA以外,所有其他驾驶员都可以正常工作。用户报告了口吃和图形故障,有时Windows不更新。如果您想要最好的结果,并且被困在Nvidia上并且无法更改它,那就:
-Dwl=false (无论如何,如果不提供,则默认值)-Ddrm=false (如果不提供的话,这是默认值)-Dopengl=full