
請在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