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

    文章

    3754

    浏览量

    43981
  • 函数
    +关注

    关注

    3

    文章

    4384

    浏览量

    65130
  • 应用程序
    +关注

    关注

    38

    文章

    3338

    浏览量

    59141

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

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

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

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

    AWPLC是ZLG自主研发的PLC系统(兼容IEC61131-3),本文用一个用定时器实现的走马灯程序,来演示如何用AWTK和AWPLC快速开发嵌入式应用程序。背景
    的头像 发表于 11-02 10:02 ?1183次阅读
    【产品应用】用 <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 ?1020次阅读
    【产品应用】用 <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 ?1116次阅读
    【从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 ?902次阅读
    【从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 ?1144次阅读
    【从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 ?1057次阅读
    【从0开始创建<b class='flag-5'>AWTK</b><b class='flag-5'>应用程序</b>】编译应用到RTOS平台

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

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

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

    导读XMLHttpRequest改变了Web应用程序与服务器交换数据的方式,fetch是其继任者。本文介绍一下如何使用JS语言开发AWTK-WEB应用程序,并用fetch访问远程数据。
    的头像 发表于 01-22 11:31 ?477次阅读
    <b class='flag-5'>AWTK</b>-WEB 快速入门(4) - JS Http <b class='flag-5'>应用程序</b>

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

    导读WebSocket可以实现双向通信,适合实时通信场景。本文介绍一下使用C语言开发AWTK-WEB应用程序,并用WebSocket与服务器通讯。用AWTKDesigner新建一个应用程序
    的头像 发表于 02-19 11:49 ?484次阅读
    <b class='flag-5'>AWTK</b>-WEB 快速入门(5) - C 语言 WebSocket <b class='flag-5'>应用程序</b>

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

    WebSocket可以实现双向通信,适合实时通信场景。本文介绍一下使用Javacript语言开发AWTK-WEB应用程序,并用WebSocket与服务器通讯。用AWTKDesigner新建一个应用程
    的头像 发表于 02-26 11:42 ?376次阅读
    <b class='flag-5'>AWTK</b>-WEB 快速入门(6) - JS WebSocket <b class='flag-5'>应用程序</b>