操作系统:windows 10
CLion版本:2023.3.1
使用CLion Bundled MinGW Version:11.0 w64
CMake version:3.27.0
G++ version:13.1.0
1 编译fltk静态库
这里使用的fltk版本为1.4.0。
下载到fltk源码后,通过命令行打开fltk源码目录,或者使用CLion将fltk源码目录打开为工程,然后进入到终端中。
在终端命令行中新建build/目录并进入到build/目录下:
mkdir build/ && cd build/
使用cmake构建,如果不指定生成器会使用电脑中的默认生成器,根据需要选择自己使用的生成器,因为后面要使用CLion基于MinGW开发,所以指定生成器为MinGW:
cmake -G "MinGW Makefiles" ../
构建完成后执行直接执行make
make
等待编译完成,在build/lib/目录下会有编译好的libfltk.a文件。
2 运行fltk第一个例子
在磁盘上另外新建一个文件夹project/作为例子工程目录,在project/中新建src/、include/FL、lib/。
将上一步编译好的libfltk.a文件拷贝到lib/中,将上一步fltk源码目录中的FL/目录下的所有.h文件拷贝到project/include/FL目录中,再将build/FL目录下fl_config.h拷贝到project/include/FL目录下。
在src/目录下新建main.cpp文件,编辑以下代码:
#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();
}
在src/目录下创建CMakeLists.txt文件,编辑以下代码:
cmake_minimum_required(VERSION 3.27)
project(fltk_dist LANGUAGES CXX)set(CMAKE_CXX_STANDARD 11)include_directories(../include)link_directories(../lib)file(GLOB SRCsrc/*.hsrc/*.cpp
)add_executable(${PROJECT_NAME}main.cpp
)target_link_libraries(${PROJECT_NAME}fltkws2_32User32comctl32GdiPlus
)
点击CLion中的运行,出现hello world窗口。
3 可能会出现的问题
在点击运行后,构建信息出现undefined reference XXX的错误信息,一般是链接静态库是找不到对应的静态库,所有一下报错信息找到对应的静态库,然后加在CMakelists.txt中的target_link_libraries中。
开始使用的是环境中g++编译的fltk静态库,在后面使用CLion自带的g++构建程序,由于两个g++版本不一致,导致在构建应用时也会报undefined reference XXX的错误,后来用CLion自带的g++重新编译静态库问题解决。