0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于AWTK开发应用程序需要遵循的规范和方法

AGk5_ZLG_zhiyua 来源:ZLG致远电子 作者:ZLG开发者社区 2022-09-07 11:52 次阅读

AWTK 是 ZLG 开源的跨平台 GUI 引擎,本文介绍一下基于 AWTK 开发应用程序需要遵循的规范和方法,以保证应用程序也能跨平台运行。



尽量使用tkc中的函数



tkc 中提供了编码、时间、网络、串口、线程、互斥和文件系统等各种需要跨平台接口的封装,这些接口在各个平台都有实现。



针对接口编程

如果需要的某个功能,在各个平台都有不同的实现,先研究各个平台提供的功能,再抽象一个统一的接口,针对各个平台实现一个适配器。应用程序使用统一的接口去访问这些功能,应用程序不但能够跨平台运行,代码也更具可读性。


指定特定平台的库、头文件、预处理参数和链接参数


helper 提供了一组函数来处理不同平台的参数。平台名称的取值有:
  • “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 是数组类型。
  • 添加平台特有的头文件的搜索路径;

add_platform_cpppath(self, platform_name, APP_CPPPATH)

示例:

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

* 注意这里的 APP_CPPPATH 是数组类型。
  • 添加平台特有的宏定义预处理参数;

add_platform_ccflags(self, platform_name, APP_CCFLAGS)

示例:

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

* ccflags 是字符串格式不是数组。
  • 添加平台特有的C++文件的预处理参数;

add_platform_cxxflags(self, platform_name, APP_CXXFLAGS)

示例:

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

* cxxflags 是字符串格式不是数组。
  • 添加平台特有的链接参数;

add_platform_linkflags(self,platform_name,APP_LINKFLAGS)

* linkflags 是字符串格式不是数组。


区分各个平台的宏

  • WIN32 或 WINDOWS Windows 平台;
  • MINGW Windows 平台的 MinGW 编译;
  • LINUX Linux 平台;
  • MACOS 或__APPLE__ Macos 平台;
  • ANDROID Android 平台;
  • IOS iOS 平台。
* 这些宏虽然可以区分不同的平台,但是如果将这些宏分散在应用程序中,代码将会变得丑陋难读。建议先定义接口,在适配器中使用这些宏。示例:

#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__*/


添加平台特有的文件

有些文件是特定平台才需要的,可以根据平台的名称,来决定添加哪些文件。示例:

importplatform;

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

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

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源
    +关注

    关注

    3

    文章

    3334

    浏览量

    42482
  • 函数
    +关注

    关注

    3

    文章

    4329

    浏览量

    62586
  • 应用程序
    +关注

    关注

    37

    文章

    3268

    浏览量

    57694

原文标题:【Z站推荐】用 AWTK 编写跨平台的代码

文章出处:【微信号:ZLG_zhiyuan,微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AWTK的寓意

    、可轻松做出炫酷效果的GUI引擎。AWTK寓意有两个方面:Toolkit AnyWhere。ZLG物联网操作系统AWorks内置GUI。运行效果截图:二、最终目标:支持开发嵌入式应用程序。支持
    发表于 08-20 08:12

    AWTK-MVVM是什么?其功能有哪些

    AWTK-MVVM是一套为AWTK用C语言开发,并支持各种脚本语言的MVVM框架,实现了数据绑定、命令绑定和窗口导航等基本功能,使用AWTK-MVVM
    发表于 12-15 06:07

    如何用AWTK和AWPLC快速开发嵌入式应用程序

    AWPLC 是 ZLG 自主研发的 PLC 系统(兼容 IEC61131-3),本文用一个简单的温度控制系统,来演示如何用 AWTK 和 AWPLC 快速开发嵌入式应用程序
    的头像 发表于 09-26 11:46 1401次阅读

    基于AWTK和AWPLC开发走马灯程序

    AWPLC 是 ZLG 自主研发的 PLC 系统(兼容 IEC61131-3),本文用一个简单的走马灯程序,来演示如何用 AWTK 和 AWPLC 快速开发嵌入式应用程序
    的头像 发表于 10-12 11:48 1051次阅读

    【Z站推荐】用 AWTK 编写跨平台的代码

    AWTK是ZLG开源的跨平台GUI引擎,本文介绍一下基于AWTK开发应用程序需要遵循
    的头像 发表于 09-09 14:50 848次阅读
    【Z站推荐】用 <b class='flag-5'>AWTK</b> 编写跨平台的代码

    AWTK和AWPLC快速开发嵌入式应用程序 (1)-温度控制器

    AWPLC是ZLG自主研发的PLC系统(兼容IEC61131-3),本文用一个简单的温度控制系统,来演示如何用AWTK和AWPLC快速开发嵌入式应用程序。背景AWTK全称
    的头像 发表于 09-28 09:57 711次阅读
    用<b class='flag-5'>AWTK</b>和AWPLC快速<b class='flag-5'>开发</b>嵌入式<b class='flag-5'>应用程序</b> (1)-温度控制器

    【Z站推荐】用 AWTK 和 AWPLC 快速开发嵌入式应用程序 (2)-走马灯

    AWPLC是ZLG自主研发的PLC系统(兼容IEC61131-3),本文用一个简单的走马灯程序,来演示如何用AWTK和AWPLC快速开发嵌入式应用程序。背景
    的头像 发表于 10-13 14:38 670次阅读
    【Z站推荐】用 <b class='flag-5'>AWTK</b> 和 AWPLC 快速<b class='flag-5'>开发</b>嵌入式<b class='flag-5'>应用程序</b> (2)-走马灯

    【产品应用】用 AWTK 和 AWPLC 快速开发嵌入式应用程序 (3)- 定时器

    AWPLC是ZLG自主研发的PLC系统(兼容IEC61131-3),本文用一个用定时器实现的走马灯程序,来演示如何用AWTK和AWPLC快速开发嵌入式应用程序。背景
    的头像 发表于 11-02 10:02 745次阅读
    【产品应用】用 <b class='flag-5'>AWTK</b> 和 AWPLC 快速<b class='flag-5'>开发</b>嵌入式<b class='flag-5'>应用程序</b> (3)- 定时器

    【产品应用】用 AWTK 和 AWPLC 快速开发嵌入式应用程序 (2)-走马灯

    AWPLC是ZLG自主研发的PLC系统(兼容IEC61131-3),本文用一个简单的走马灯程序,来演示如何用AWTK和AWPLC快速开发嵌入式应用程序。背景
    的头像 发表于 06-08 10:13 636次阅读
    【产品应用】用 <b class='flag-5'>AWTK</b> 和 AWPLC 快速<b class='flag-5'>开发</b>嵌入式<b class='flag-5'>应用程序</b> (2)-走马灯

    【从0开始创建AWTK应用程序开发及调试环境搭建

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用
    的头像 发表于 11-11 10:00 671次阅读
    【从0开始创建<b class='flag-5'>AWTK</b><b class='flag-5'>应用程序</b>】<b class='flag-5'>开发</b>及调试环境搭建

    【从0开始创建AWTK应用程序】创建应用程序并在模拟器运行

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用
    的头像 发表于 12-01 08:24 501次阅读
    【从0开始创建<b class='flag-5'>AWTK</b><b class='flag-5'>应用程序</b>】创建<b class='flag-5'>应用程序</b>并在模拟器运行

    【从0开始创建AWTK应用程序】编译应用到嵌入式Linux平台运行

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用
    的头像 发表于 12-07 12:08 707次阅读
    【从0开始创建<b class='flag-5'>AWTK</b><b class='flag-5'>应用程序</b>】编译应用到嵌入式Linux平台运行

    【从0开始创建AWTK应用程序】编译应用到RTOS平台

    AWTK是基于C语言开发的跨平台GUI框架。本系列文章介绍如何从0开始创建AWTK应用程序,包括搭建开发调试环境、使用
    的头像 发表于 03-21 08:23 611次阅读
    【从0开始创建<b class='flag-5'>AWTK</b><b class='flag-5'>应用程序</b>】编译应用到RTOS平台

    AWTK-WEB 快速入门(1) - C 语言应用程序

    导读AWTK可以使用相同的技术栈开发各种平台的应用程序。有时我们需要使用Web界面与设备进行交互,本文介绍一下如何使用C语言开发
    的头像 发表于 11-27 11:46 198次阅读
    <b class='flag-5'>AWTK</b>-WEB 快速入门(1) - C 语言<b class='flag-5'>应用程序</b>

    AWTK-WEB 快速入门(2) - JS 应用程序

    导读AWTK可以使用相同的技术栈开发各种平台的应用程序。有时我们需要使用Web界面与设备进行交互,本文介绍一下如何使用JS语言开发
    的头像 发表于 12-05 01:04 101次阅读
    <b class='flag-5'>AWTK</b>-WEB 快速入门(2) - JS <b class='flag-5'>应用程序</b>