工具推荐二

(点击上方公众号,可快速关注)

GUI框架

我是个后端程序员,使用GUI框架的机会很少,主要用来编写个人或工作中的一些小工具上,经验有限,仅供参考。

  • Tk框架

    这个框架tcl语言自带,在python里由pytk包提供。Python默认的IDLE编辑器的界面就是pytk编写的。它功能简单,性能也一般,相对应地学起来也简单,适合一些小的个人项目。

  • Java系框架

    早期的awt已淘汰,swing未来堪忧,即使更现代的JavaFX未来也不明朗。桌面开发日渐式微,现在桌面开发的需求越来越少,GUI框架发展也日益缓慢甚至停滞。还有个swt的框架,eclipse的界面就是用它写的。

    swing是纯Java实现、跨平台,样式在各个平台保持一致,带来的后果是性能相对不高,默认的观感也比较丑,netbeans和Intellij界面都是swing写的;性能还好,至少直观感受来看netbeans要比eclipse响应要好。swt就是因为忍受不了swing的性能不高发展起来的,由于使用了原生组件所以性能相对要好。JavaFx使用最新的技术,更好地融入了html/css,这是每个GUI框架的发展方向。

    推荐JavaFx。

  • QT

    最强大的C++ GUI框架,没有之一,商业上用得也比较多,开源桌面KDE就是用QT开发的。

    如果有跨平台的需求,基本上是唯一解。

  • GTK

    用C编写的GUI框架,Gnome桌面的功臣,这是我用得时间最长的GUI框架,虽然也跨平台,但主战场还是在Linux上,其他平台支持较差。随着新版本的发布,对其他平台支持也越来越好。由于是C写的,所以很多语言都有其绑定,再加上实现了GObject Introspection,使得其他语言使用该框架更加方便,比如,Haskell中的gtk-gi库就是通过程序自动生成的,不用手工添加ffi实现,减少了繁重的人力。

    如果你使用的语言的QT绑定质量不高的话,可以考虑一下这个框架。

  • duilib

Duilib是一个Windows下免费开源的DirectUI界面库,由于简约易扩展的设计以及稳定高效的实现被各大互联网公司普遍接受,广泛应用于包括IM、视频客户端、股票行情软件、导航软件、手机辅助软件、安全软件等多个行业的众多pc客户端软件。Duilib还在不断的发展中,在文档、例子、动画、渲染引擎等多个方面将持续改进。

之前写过一篇文章推荐过这个框架,国内很多企业都使用,如,微信。当时还推荐了另外一个C++的GUI框架nana,可惜基本停滞更新了。

如果要在Window下使用C++开发,可以考虑。

  • HTML5+CSS3+JS

    上面提到的跨平台的QT、Gtk等,也只是跨PC的各个平台,移动平台是不支持的。如果希望编写的应用程序同时跑在多个平台,比如Windows、Linux、MacOS、iphone、Android等,可能只有一个选择了,就是基于Web开发,尤其是个人根本没有精力在每个平台开发原生应用。

    基于HTML5+CSS3+JS的框架很多,比如,用的比较多的Electron,以及Haskell的reflex。

    性能是其硬伤,基本上所有这类软件,都给人一种飘飘软件的感觉。如果对性能要求高,就不要考虑这些Web组件了。

这个领域经过早年PC的繁荣,产生了大量的框架,除了上面介绍的,还有,wxWidgets、FLTK…,甚至MFC,可以多从网上搜搜,一定能找到适合的一款。这个领域基本也属于“夕阳产业”了,也不要投入太多的精力。

C++构建工具

在构建程序时,手工输入命令比较繁琐,每次都要重复输入,而且容易出错,怎么能让这些过程实现某种自动化呢,于是出现了构建工具。构建工具本质上就是一个批处理脚本,然后根据输入自动执行某些过程,比如,编译、连接、安装、打包等。严格来讲,下文介绍的工具,除了make,其他都不是构建工具,属于构建工具生成器的范畴,而且部分工具还有包管理器的功能,这里不过分区分。

现代编程语言基本上都有自己的构建工具,比如Rust的Cargo,Haskell的Cabal等。而C/C++由于出现的比较早,在历史的长河里出现了很多构建工具,这部分主要介绍C/C++的构建工具。

  • make

    最早使用的构建工具,遇到的主要问题有以下几个:

  • 跨平台困难,除了*nix平台,早些年在其他平台用还是很困难的;

  • 没标准、不统一,linux下的make和Unix下的make是有差异的,在FreeBSD上编译软件经常遇到该类的问题;

  • 原始,所有的指令都需要自己写,若支持多个编译器、多个系统,需要处理大量的细节;

  • 语法不友好,经典的空格和TAB的问题,刚上手就遇到过,再加上与shell编程关系紧密,实在是不想学。

  • GNU Autotools

    这个工具只听没用过,第一次见面被它的复杂吓着了。相比make,它主要用于自动生成较大项目的Makefile,避免繁琐的命令行操作。不过对于较小的项目,真的不如make直观,这是我当时放弃的主要原因。

  • cmake

    事实上的标准,优点很多,比如能生成很多类型的构建系统,比如,VS项目、makefile、ninja等,有自己的包管理器,同时支持Conan、vcpkg等包管理器等等。

    不过,使用的DSL语言可读性是真的差,最受人诟病的是函数没有返回值,通过修改变量的方式将值从函数传出来,方式很笨很丑;语言设计得很蹩脚,加上官方文档得晦涩难懂,导致学起来很费劲。

    新项目,我推荐后面介绍的meson和xmake,后两个工具吸取了cmake的经验教训,比cmake好用得多。虽然极其不情愿推荐cmake,但由于其先发优势而建立起来地生态,有时候必须还得学一下,原因有二:

  • 事实上的标准,不是危言耸听,很多项目都使用了cmake,很多IDE支持cmake,在工作学习中不可避免地用到;

  • 跟现代C++类似,现代cmake极大提高了可用性,可以一试。

  • meson

    站在了cmake的肩膀上,继承了cmake的优点,规避了缺点。我选择它主要原因是其语法的简洁、高可读,而且速度也很好。现在也有很多大型项目迁移到meson,比如大名鼎鼎的gnome。

    强烈推荐

  • xmake
    这个更是集大成者,用作者的话说:

    Xmake = Build backend 
        + Project Generator 
        + Package Manager 
        + [Remote|Distributed] Build 
        + Cache

    别人有的它有,别人没有的它也有。

    强烈推荐

f45148e9aa4a53368f8e581da1a61286.jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值