Ubuntu-22.04编译安装FLTK

2023-12-26 18:53:13

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

最近在研究FLTK,突然对它感了兴趣,就想使用Clion跑一些项目。经过一下午不断摸索,终于在Linux上跑起来了Demo,现在分享给需要的各位。

CPU:I5 13600KF
OS:Ubuntu-22.04 64bits


一、FLTK是什么?

FLTK (Fast Light Tool Kit 发音为full tick) 是一种使用C++开发的GUI工具包,它可以应用于Unix,Linux,MS-Windows95/98/NT/2000/XP/Vista/7/10/11和MacOS操作系统平台,相 对于其它的许多图形接口开发工具包(如MFC、GTK、QT等),它具有体积很小、速度比较快,且有着更好的移植性。

研究它纯粹是因为移植性还可以,而本身又属于比较轻量化的图形库,如果像开发炫酷的GUI,推荐还是QT5或QT6,这都是后话了。

二、下载源代码

我反正是没找到bin,只找到源代码。
官网下载页面

如果你跟我一样是Ubuntu-22.04,建议你下载1.3.9以后的版本,兼容性会更好,不保证之前的版本可以运行在Ubuntu-22.04上。

在这里插入图片描述

三、准备编译环境

我使用的是GNU环境,系统自带的,你可以按照我的步骤,缺什么安装什么。

四、编译

这里使用configure编译,这个比Cmake方便。

这里如果你只需要静态库就什么都不配置,默认安装在/usr/local

./configure

如果你需要自定义安装目录就使用下面的配置

./configure --prefix=<你的目录>

如果你需要动态库就使用下面的配置

./configure --prefix=<你的目录> --enable-shared=yes

配置好了

make -j4 && make install

五、运行测试程序

自带了一个测试程序fluid,双击即可运行。成功后大概是长这样。
在这里插入图片描述

六、Demo

怎么会没有测试代码呢,要不然别人认为我忽悠呢。这里如果你的系统自带jpeg、png和libz库就不需要使用内建的库了,如果没有就使用内建,运行效果一样的。

CmakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(fltk_demo)

set(CMAKE_CXX_STANDARD 11)
include_directories(include)
include_directories(include/FL)
include_directories(include/FL/images)

link_directories(/opt/fltk-1.3.9/lib)

add_executable(fltk_demo main.cpp)
target_link_libraries(${PROJECT_NAME} fltk_forms)
target_link_libraries(${PROJECT_NAME} fltk_images)
target_link_libraries(${PROJECT_NAME} fltk_gl)
target_link_libraries(${PROJECT_NAME} fltk)

main.cpp

#include <iostream>
#include <Fl.H>
#include <Fl_Window.H>
#include <Fl_Box.H>


int main(int argc, char **argv) {
    auto *window = new Fl_Window(340, 180);
    auto *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();
}

运行结果大概是下面这样
在这里插入图片描述


总结

1、我拿Windows的代码直接在Ubuntu上编译运行,一句代码都没有改,这种移植性非常好。

文章来源:https://blog.csdn.net/jiexijihe945/article/details/135226665
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。