AWTK 是 ZLG 開源的跨平臺(tái) GUI 引擎,本文介紹一下基于 AWTK 開發(fā)應(yīng)用程序需要遵循的規(guī)范和方法,以保證應(yīng)用程序也能跨平臺(tái)運(yùn)行。
盡量使用tkc中的函數(shù)
tkc 中提供了編碼、時(shí)間、網(wǎng)絡(luò)、串口、線程、互斥和文件系統(tǒng)等各種需要跨平臺(tái)接口的封裝,這些接口在各個(gè)平臺(tái)都有實(shí)現(xiàn)。
針對(duì)接口編程
如果需要的某個(gè)功能,在各個(gè)平臺(tái)都有不同的實(shí)現(xiàn),先研究各個(gè)平臺(tái)提供的功能,再抽象一個(gè)統(tǒng)一的接口,針對(duì)各個(gè)平臺(tái)實(shí)現(xiàn)一個(gè)適配器。應(yīng)用程序使用統(tǒng)一的接口去訪問這些功能,應(yīng)用程序不但能夠跨平臺(tái)運(yùn)行,代碼也更具可讀性。
指定特定平臺(tái)的庫、頭文件、預(yù)處理參數(shù)和鏈接參數(shù)
helper 提供了一組函數(shù)來處理不同平臺(tái)的參數(shù)。平臺(tái)名稱的取值有:
-
“Windows” Windows 平臺(tái);
-
“Linux” Linux 平臺(tái);
-
“Darwin” MacOS 平臺(tái);
-
添加平臺(tái)特有的庫;
示例:
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"])
-
添加平臺(tái)特有的庫的搜索路徑;
add_platform_libpath(self,platform_name,APP_LIBPATH)
示例:helper.add_platform_libpath("Linux",["/usr/local/lib"])
* 注意這里的 APP_LIBPATH 是數(shù)組類型。-
添加平臺(tái)特有的頭文件的搜索路徑;
add_platform_cpppath(self, platform_name, APP_CPPPATH)
示例:helper.add_platform_libpath("Linux", ["/usr/local/include"])
* 注意這里的 APP_CPPPATH 是數(shù)組類型。-
添加平臺(tái)特有的宏定義預(yù)處理參數(shù);
add_platform_ccflags(self, platform_name, APP_CCFLAGS)
示例:helper.add_platform_ccflags("Linux", " -DSOME_MACRO=1 ")
* ccflags 是字符串格式不是數(shù)組。-
添加平臺(tái)特有的C++文件的預(yù)處理參數(shù);
add_platform_cxxflags(self, platform_name, APP_CXXFLAGS)
示例:helper.add_platform_cxxflags("Linux", " -DSOME_MACRO=1 ")
* cxxflags 是字符串格式不是數(shù)組。-
添加平臺(tái)特有的鏈接參數(shù);
add_platform_linkflags(self,platform_name,APP_LINKFLAGS)
* linkflags 是字符串格式不是數(shù)組。
區(qū)分各個(gè)平臺(tái)的宏
- WIN32 或 WINDOWS Windows 平臺(tái);
- MINGW Windows 平臺(tái)的 MinGW 編譯;
- LINUX Linux 平臺(tái);
- MACOS 或__APPLE__ Macos 平臺(tái);
- ANDROID Android 平臺(tái);
- IOS iOS 平臺(tái)。
#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__*/
添加平臺(tái)特有的文件
有些文件是特定平臺(tái)才需要的,可以根據(jù)平臺(tái)的名稱,來決定添加哪些文件。示例:
importplatform;
OS_NAME=platform.system()
ifOS_NAME=='Windows':
sources=Glob('src/windows/*.c')
elifOS_NAME=='Linux':
sources=Glob('src/linux/*.c')
-
開源
+關(guān)注
關(guān)注
3文章
3529瀏覽量
43267 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4364瀏覽量
63807 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3316瀏覽量
58514
原文標(biāo)題:【Z站推薦】用 AWTK 編寫跨平臺(tái)的代碼
文章出處:【微信號(hào):ZLG_zhiyuan,微信公眾號(hào):ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何用AWTK和AWPLC快速開發(fā)嵌入式應(yīng)用程序
基于AWTK和AWPLC開發(fā)走馬燈程序
用AWTK和AWPLC快速開發(fā)嵌入式應(yīng)用程序 (1)-溫度控制器

【產(chǎn)品應(yīng)用】用 AWTK 和 AWPLC 快速開發(fā)嵌入式應(yīng)用程序 (3)- 定時(shí)器

【產(chǎn)品應(yīng)用】用 AWTK 和 AWPLC 快速開發(fā)嵌入式應(yīng)用程序 (2)-走馬燈

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

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

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

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

AWTK-WEB 快速入門(1) - C 語言應(yīng)用程序

AWTK-WEB 快速入門(2) - JS 應(yīng)用程序

AWTK-WEB 快速入門(4) - JS Http 應(yīng)用程序

AWTK-WEB 快速入門(5) - C 語言 WebSocket 應(yīng)用程序

AWTK-WEB 快速入門(6) - JS WebSocket 應(yīng)用程序

評(píng)論