0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【Z站推薦】用 AWTK 編寫跨平臺的代碼

ZLG致遠(yuǎn)電子 ? 2022-09-09 14:50 ? 次閱讀

AWTK 是 ZLG 開源的跨平臺 GUI 引擎,本文介紹一下基于 AWTK 開發(fā)應(yīng)用程序需要遵循的規(guī)范和方法,以保證應(yīng)用程序也能跨平臺運行。93ae978a-2eec-11ed-9ade-dac502259ad0.jpg ?盡量使用tkc中的函數(shù)tkc 中提供了編碼、時間、網(wǎng)絡(luò)、串口、線程、互斥和文件系統(tǒng)等各種需要跨平臺接口的封裝,這些接口在各個平臺都有實現(xiàn)。
93ae978a-2eec-11ed-9ade-dac502259ad0.jpg ?針對接口編程

如果需要的某個功能,在各個平臺都有不同的實現(xiàn),先研究各個平臺提供的功能,再抽象一個統(tǒng)一的接口,針對各個平臺實現(xiàn)一個適配器。應(yīng)用程序使用統(tǒng)一的接口去訪問這些功能,應(yīng)用程序不但能夠跨平臺運行,代碼也更具可讀性。


93ae978a-2eec-11ed-9ade-dac502259ad0.jpg ?指定特定平臺的庫、頭文件、預(yù)處理參數(shù)和鏈接參數(shù)helper 提供了一組函數(shù)來處理不同平臺的參數(shù)。平臺名稱的取值有:

“Windows” Windows 平臺;

Linux” Linux 平臺;

“Darwin” MacOS 平臺;

* AndroidIOS 不使用 scons 編譯,故不使用這種方式。

添加平臺特有的庫;

示例:

helper.add_platform_libs("Windows",["ws2_32"])

helper.add_platform_libs("Linux",["pthread","dl","readline","m"])

helper.add_platform_libs("Darwin",["pthread","dl","readline","m"])

添加平臺特有的庫的搜索路徑;

add_platform_libpath(self,platform_name,APP_LIBPATH)

示例:

helper.add_platform_libpath("Linux",["/usr/local/lib"])

* 注意這里的 APP_LIBPATH 是數(shù)組類型。

添加平臺特有的頭文件的搜索路徑;

add_platform_cpppath(self, platform_name, APP_CPPPATH)

示例:

helper.add_platform_libpath("Linux", ["/usr/local/include"])

* 注意這里的 APP_CPPPATH 是數(shù)組類型。

添加平臺特有的宏定義預(yù)處理參數(shù);

add_platform_ccflags(self, platform_name, APP_CCFLAGS)

示例:

helper.add_platform_ccflags("Linux", " -DSOME_MACRO=1 ")

* ccflags 是字符串格式不是數(shù)組。

添加平臺特有的C++文件的預(yù)處理參數(shù);

add_platform_cxxflags(self, platform_name, APP_CXXFLAGS)

示例:

helper.add_platform_cxxflags("Linux", " -DSOME_MACRO=1 ")

* cxxflags 是字符串格式不是數(shù)組。

添加平臺特有的鏈接參數(shù);

add_platform_linkflags(self,platform_name,APP_LINKFLAGS)

* linkflags 是字符串格式不是數(shù)組。

93c1d94e-2eec-11ed-9ade-dac502259ad0.jpg 區(qū)分各個平臺的宏

  • WIN32 或 WINDOWS Windows 平臺;
  • MINGW Windows 平臺的 MinGW 編譯;
  • LINUX Linux 平臺;
  • MACOS 或__APPLE__ Macos 平臺;
  • ANDROID Android 平臺;
  • IOS iOS 平臺。

* 這些宏雖然可以區(qū)分不同的平臺,但是如果將這些宏分散在應(yīng)用程序中,代碼將會變得丑陋難讀。建議先定義接口,在適配器中使用這些宏。示例:

#ifdefANDROID
#include"SDL.h"
#endif/*ANDROID*/

#ifdefined(__APPLE__)||defined(LINUX)
#include
#include
#include
#include
#elifdefined(WIN32)
#include
#include
#include
#include
#include
#include
#defineunlink_unlink
#definerenameMoveFileA
#defineftruncate_chsize
#include"./dirent.inc"
#include"tkc/utf8.h"
#include"tkc/mem.h"
#endif

#ifdefined(__APPLE__)
#include
#endif/*__APPLE__*/

93c1d94e-2eec-11ed-9ade-dac502259ad0.jpg 添加平臺特有的文件有些文件是特定平臺才需要的,可以根據(jù)平臺的名稱,來決定添加哪些文件。示例:

importplatform;

OS_NAME=platform.system()
ifOS_NAME=='Windows':
sources=Glob('src/windows/*.c')
elifOS_NAME=='Linux':

sources=Glob('src/linux/*.c')

【版權(quán)聲明】本文為ZLG開發(fā)者社區(qū)用戶原創(chuàng)內(nèi)容,未經(jīng)授權(quán)不得轉(zhuǎn)載。歡迎更多用戶到社區(qū)交流互動、創(chuàng)作博文,一經(jīng)采用,可獲得百元京東E卡。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4722

    瀏覽量

    68231
收藏 人收藏

    評論

    相關(guān)推薦

    AWTK使用經(jīng)驗】如何在AWTK顯示阿拉伯文本

    AWTK是基于C語言開發(fā)的平臺GUI框架。AWTK使用經(jīng)驗系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何播放視頻或攝像
    的頭像 發(fā)表于 09-12 08:07 ?279次閱讀
    【<b class='flag-5'>AWTK</b>使用經(jīng)驗】如何在<b class='flag-5'>AWTK</b>顯示阿拉伯文本

    AWTK最新動態(tài)】AWTK 1.8版本發(fā)布

    AWTK是一套基于C語言開發(fā)的平臺GUI框架,目前正式推出1.8版本。本次更新不僅對許多細(xì)節(jié)進(jìn)行了優(yōu)化,還增添了眾多重要特性和文檔資料。此外,還引入了三款創(chuàng)新控件和兩個與AWTK相關(guān)
    的頭像 發(fā)表于 08-30 12:48 ?359次閱讀
    【<b class='flag-5'>AWTK</b>最新動態(tài)】<b class='flag-5'>AWTK</b> 1.8版本發(fā)布

    AWTK使用經(jīng)驗】如何更換AWTK SDK與渲染模式

    AWTK是基于C語言開發(fā)的平臺GUI框架。《AWTK使用經(jīng)驗》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何播放攝像頭
    的頭像 發(fā)表于 08-01 08:25 ?991次閱讀
    【<b class='flag-5'>AWTK</b>使用經(jīng)驗】如何更換<b class='flag-5'>AWTK</b> SDK與渲染模式

    AWTK使用經(jīng)驗】如何實現(xiàn)序列幀動畫

    AWTK是基于C語言開發(fā)的平臺GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資
    的頭像 發(fā)表于 07-18 08:25 ?346次閱讀
    【<b class='flag-5'>AWTK</b>使用經(jīng)驗】如何實現(xiàn)序列幀動畫

    AWTK使用經(jīng)驗】如何播放視頻或攝像頭畫面

    AWTK是基于C語言開發(fā)的平臺GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資
    的頭像 發(fā)表于 07-04 08:25 ?535次閱讀
    【<b class='flag-5'>AWTK</b>使用經(jīng)驗】如何播放視頻或攝像頭畫面

    AWTK使用經(jīng)驗】如何響應(yīng)物理按鍵

    AWTK是基于C語言開發(fā)的平臺GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資
    的頭像 發(fā)表于 06-06 08:25 ?730次閱讀
    【<b class='flag-5'>AWTK</b>使用經(jīng)驗】如何響應(yīng)物理按鍵

    AWTK 開源串口屏開發(fā)(18) - C 語言自定義命令

    如果AWTK-HMI內(nèi)置模型無法滿足需求,可以使用C語言來擴(kuò)展默認(rèn)模型。本文通過一個簡單的例子,介紹一下C語言擴(kuò)展默認(rèn)模型的方法。AWTK-HMI內(nèi)置了不少模型,利用這些模型開發(fā)應(yīng)用程序,不需要
    的頭像 發(fā)表于 05-11 08:24 ?404次閱讀
    <b class='flag-5'>AWTK</b> 開源串口屏開發(fā)(18) - <b class='flag-5'>用</b> C 語言自定義命令

    AWTK使用經(jīng)驗】加載和釋放外部圖片

    AWTK是基于C語言開發(fā)的平臺GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資
    的頭像 發(fā)表于 04-26 08:25 ?413次閱讀
    【<b class='flag-5'>AWTK</b>使用經(jīng)驗】加載和釋放外部圖片

    AWTK使用經(jīng)驗】如何設(shè)計立體電池進(jìn)度條?

    AWTK是基于C語言開發(fā)的平臺GUI框架?!?b class='flag-5'>AWTK使用經(jīng)驗》系列文章將介紹開發(fā)AWTK過程中一些常見問題與解決方案,例如:如何加載外部資
    的頭像 發(fā)表于 04-18 08:25 ?405次閱讀
    【<b class='flag-5'>AWTK</b>使用經(jīng)驗】如何設(shè)計立體電池進(jìn)度條?

    AWTK 開源串口屏開發(fā)(15) - 通過 MODBUS 訪問遠(yuǎn)程數(shù)據(jù)

    AWTK串口屏內(nèi)置MODBUSClient模型,支持MODBUS協(xié)議從遠(yuǎn)程設(shè)備獲取數(shù)據(jù)。不用編寫代碼即可實現(xiàn)對遠(yuǎn)程設(shè)備數(shù)據(jù)的顯示和修改。在AWTK
    的頭像 發(fā)表于 03-30 08:23 ?364次閱讀
    <b class='flag-5'>AWTK</b> 開源串口屏開發(fā)(15) - 通過 MODBUS 訪問遠(yuǎn)程數(shù)據(jù)

    【從0開始創(chuàng)建AWTK應(yīng)用程序】編譯應(yīng)用到RTOS平臺

    AWTK是基于C語言開發(fā)的平臺GUI框架。本系列文章介紹如何從0開始創(chuàng)建AWTK應(yīng)用程序,包括搭建開發(fā)調(diào)試環(huán)境、使用AWTK創(chuàng)建Hello
    的頭像 發(fā)表于 03-21 08:23 ?544次閱讀
    【從0開始創(chuàng)建<b class='flag-5'>AWTK</b>應(yīng)用程序】編譯應(yīng)用到RTOS<b class='flag-5'>平臺</b>

    AWTK開源智能串口屏方案】MCU SDK使用與編譯運行

    本篇文章將介紹AWTK-HMI中的MCU端開發(fā)方法,包括MCUSDK常用API的說明、使用流程及如何編譯到Linux和STM32平臺。引言:AWTK-HMI是基于AWTK
    的頭像 發(fā)表于 02-19 12:11 ?1098次閱讀
    【<b class='flag-5'>AWTK</b>開源智能串口屏方案】MCU SDK使用與編譯運行

    【從0開始創(chuàng)建AWTK應(yīng)用程序】編譯應(yīng)用到嵌入式Linux平臺運行

    AWTK是基于C語言開發(fā)的平臺GUI框架。本系列文章介紹如何從0開始創(chuàng)建AWTK應(yīng)用程序,包括搭建開發(fā)調(diào)試環(huán)境、使用AWTK創(chuàng)建Hello
    的頭像 發(fā)表于 12-07 12:08 ?648次閱讀
    【從0開始創(chuàng)建<b class='flag-5'>AWTK</b>應(yīng)用程序】編譯應(yīng)用到嵌入式Linux<b class='flag-5'>平臺</b>運行

    【從0開始創(chuàng)建AWTK應(yīng)用程序】創(chuàng)建應(yīng)用程序并在模擬器運行

    AWTK是基于C語言開發(fā)的平臺GUI框架。本系列文章介紹如何從0開始創(chuàng)建AWTK應(yīng)用程序,包括搭建開發(fā)調(diào)試環(huán)境、使用AWTK創(chuàng)建Hello
    的頭像 發(fā)表于 12-01 08:24 ?455次閱讀
    【從0開始創(chuàng)建<b class='flag-5'>AWTK</b>應(yīng)用程序】創(chuàng)建應(yīng)用程序并在模擬器運行

    【從0開始創(chuàng)建AWTK應(yīng)用程序】開發(fā)及調(diào)試環(huán)境搭建

    AWTK是基于C語言開發(fā)的平臺GUI框架。本系列文章介紹如何從0開始創(chuàng)建AWTK應(yīng)用程序,包括搭建開發(fā)調(diào)試環(huán)境、使用AWTK創(chuàng)建Hello
    的頭像 發(fā)表于 11-11 10:00 ?624次閱讀
    【從0開始創(chuàng)建<b class='flag-5'>AWTK</b>應(yīng)用程序】開發(fā)及調(diào)試環(huán)境搭建