Windows MinGW-w64编译安装FLTK 1.3.5

简介

FLTK(Fast Light ToolKit)是一个轻量级C++图形界面库,可以创建简单的GUI程序。C++之父Stroustrup在他的书 C++程序设计:原理与实践 中就是使用的FLTK作为界面库创建图形界面程序。相比于Qt等大型库,FLTK最大的优点就是轻量级,不需要动辄上G的安装包,打包出来的程序运行速度快、体积小。缺点一是功能不是那么丰富,没有“拖控件”这样的操作;二是对Windows系统极其不友好,能安装上简直可以烧高香。

有一种走捷径的方式,就是用微软的Visual Studio。这货体积庞大,功能丰富,使用难度也比较高。书中给的指南就是用VS的。其实VS的项目管理还是相当不错的,做大项目十分适合,缺点是打开速度慢,占用空间大,操作比较复杂。用VS编译FLTK后,以后VS建立项目时可以链接到第三方库,编译运行还是可以过的。但是想想要是以后写个HelloWorld都要开VS,设置项目第三方库,一系列乱七八糟配置,emmm遂决定不用VS。(VS那么大要是都忍了,再加个Qt又何妨?)

我自己的开发环境一直是MinGW-w64 + VS code,开发体验相当棒,不想再切换了。FLTK的官方文档给Windows系统留了两条路:一是老老实实装VS,二是装个能模拟Linux环境的,比如Cygwin和MSYS。MSYS我试了下,装完键入pacman -Syu就卡死再也动不了了,遂弃(至今不知原因)开始折腾MinGW装库。

经历了前前后后几个月(当然不是连续的)的折腾,终于误打误撞的(划掉)假装成功安装了FLTK(不知道以后会不会出问题)。无奈这个库实在太小众,资料十分不全面,官方文档关于安装也语焉不详,很多东西要自己摸索。

FLTK Demo运行图

废话了这么多,下面进入主题。

众所周知(不知道也没关系),Linux下安装C++库只要素质三连:

./configure
make
make install

但是在Windows下,C++第三方库的管理是极其麻烦的,分分钟让人想骂娘。在开始之前,请确认做好以下准备:

  • Windows系统,推荐Windows 10
  • MinGW-w64,版本不要太老
  • Git,装Git是为了使用Git自带的Git Bash。Bash的环境比起Windows的Command命令行还是好很多的(反正我在cmd下没成功过)powershell更强,但那个我不会用
  • VS code,或者其他的文本编辑器(Vim啦,Sublime啦,等等)
  • FLTK 1.3.5源码,可从官网下载tar.gz格式的,可用tar -xzv或者7zip解压
  • 想好一个放第三方库文件的位置。不建议直接放到mingw64\下面,以后万一要卸载、重新编译之类的,会很麻烦。我这里用的是C:\Users\me\src\local,其他不包含空格和中文的目录也可以,下面用%LIB_ROOT%指代这个目录。

安装

环境变量配置

最好不要修改“系统的环境变量”,而是修改“用户的环境变量”,除非你知道你在做什么。

环境变量 说明
Path 在原有的环境变量基础上增加以下路径:%LIB_ROOT%\bin,%MINGW%\bin,后者目录下有个g++.exe
LIBRARY_PATH 添加变量,路径%LIB_PATH%\lib
C_INCLUDE_PATH 添加变量,路径%LIB_PATH%\include
CPLUS_INCLUDE_PATH 添加变量,路径%LIB_PATH%\include

后面那几个环境变量MinGW会引用,注意别把名字输错了。

你可能需要重启电脑以使环境变量的修改生效。

编译源码

把源码文件夹复制到一个不包含空格的目录下,打开文件夹,右击空白处打开git bash。然后输入:

./configure --prefix=/c/Users/me/src/local

(其实我一开始用的是./configure --prefix=C:\\Users\\me\\src\\local,搞得后面还要用查找来改名,把名字都改成Linux格式……作死)

等待配置。多说一句,这里的配置是针对你的编译器优化的,比如VS的V
C编译器和GCC通常需要的库就不一样。配置完成后输入

mingw32-make

开始编译。这里编译完之后,你可以试试直接键入

mingw32-make install

然后看着它报错……这里我也不懂为什么。强制让它忽略错误安装:

mingw32-make install --ignore-error

一切顺利的话,你会在你的目录下看到bin, include, lib三个文件夹。其中bin是工具(等下会用到),include里面是头文件,lib里面是静态链接库。

运行第一个FLTK程序

从官方示例抄的代码:新建一个文件hello.cpp,输入以下代码

#include 
#include 
#include 

int main(int argc, char **argv)
{
  Fl_Window *window = new Fl_Window(340, 180);
  Fl_Box *box = new Fl_Box(20, 40, 300, 100, "Hello, World!");
  box->box(FL_UP_BOX);
  box->labelfont(FL_BOLD + FL_ITALIC);
  box->labelsize(36);
  box->labeltype(FL_SHADOW_LABEL);
  window->end();
  window->show(argc, argv);
  return Fl::run();
}

保存。且慢!你也许想用g++ hello.cpp -o hello来编译它,如果你这样做,将会得到一串错误提示。你必须链接FLTK的库,用到g++的一些链接参数。正确的做法是:回车执行以下命令

fltk-config --compile hello.cpp

如果以上一切正常,你就能看到一开始的那个小窗口了。以上步骤对我的机器适用,不保证在所有人的机器上都适用。

关于fltk-config的更多用法,给一个官网链接:FLTK Compiling

你可能感兴趣的:(Windows MinGW-w64编译安装FLTK 1.3.5)