写在前面
假期抽时间学习一下跨平台GUI界面的开发, 正好也当做C++的练手小项目了. C++标准库中没有对于GUI的支持, 需要依赖三方库, 这里我先想到的是老牌跨平台GUI——Qt, 但是作为一个小项目感觉使用Qt有点小题大做, 后来看到FLTK这个跨平台的图形库, 感觉可以研究一番. 体积小, 跨平台, 编译速度快, 是个不错的选择. 缺点也有, 就是界面比较丑, 社区也不是很活跃, 但是好在最新版本是几个月前的, 所以也可以研究一下.
官网:Fast Light Toolkit - Fast Light Toolkit (FLTK);
官方文档: FLTK 1.3.6: FLTK Programming Manual.
官方文档PDF: FLTK 1.3.6 Programming Manual;
其他资源:
一个罗列FLTK常用代码段的网站: Erco’s FLTK Cheat Page (seriss.com).
安装与配置
运行环境:
macOS 11.4
homebrew Apple Silicon
安装
直接终端输入:
brew install fltk
即可完成安装, Windows下可能需要编译安装.
终端输入:
~ → fltk-config --version
1.3.6
即为安装成功.
helloworld
下面是一个简单的FLTK程序的示例, 用于输出Hello world.
#include <iostream>
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>
int main (int argc, char *argv[]) {
Fl_Window *window;
Fl_Box *box;
window = new Fl_Window(300, 180);
window->label("HelloWorld!");
box = new Fl_Box(20, 40, 260, 100, "Hello World!");
box->box(FL_UP_BOX);
box->labelsize(36);
box->labelfont(FL_BOLD + FL_ITALIC);
(FL_SHADOW_LABEL);
window->end();
window->show(argc, argv);
return Fl::run();
}
配置命令行
命令行直接使用fltk-config --compile yourfilename.cpp
即可快速生成.app
文件, 还是很方便的, 但是还得需要个趁手的IDE才行. 一开始我想用已经熟悉的Sublime, 但是其对C/C++的补全和格式化等支持的不够好,思考再三, 我决定选用CLion(一年免费教育体验真香).
配置CLion
这里走了一些弯路, 由于之前没接触过cmake, 在命令行下编译成功的例子来到CLion这里就不行了, 后来逐渐摸索出了成功构建的配置方式.
参考官方文档, 采用标准编译的命令是这样的:
g++ main.cpp -I/opt/homebrew/include -L/opt/homebrew/lib -lfltk -lXext -lX11 -lm
于是, 在CMakeLists.txt中, 这样配置:
cmake_minimum_required(VERSION 3.19)
project(fltk_proj)
# 设置C++标准
set(CMAKE_CXX_STANDARD 11)
# 相当于gcc `-I`参数
include_directories("/opt/homebrew/include")
# 相当于gcc `-L`参数
link_directories("/opt/homebrew/lib")
# 相当于gcc `-l`参数
link_libraries("fltk")
link_libraries("Xext")
link_libraries("X11")
link_libraries("m")
# 添加可执行程序
add_executable(test1 main.cpp)
里面的参数设置都对应了gcc的参数, 这里注意头文件和链接库的目录是/opt/homebrew/
, Intel版Mac的话应该是/usr/local/
, 需要注意一下.
运行结果
确实不怎么好看…后续研究研究怎么美化这个界面.