操作系统:windows 10
CLion版本:2023.3.1
使用CLion Bundled MinGW Version:11.0 w64
CMake version:3.27.0
G++ version:13.1.0
这里使用的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
文件。
在磁盘上另外新建一个文件夹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 SRC
src/*.h
src/*.cpp
)
add_executable(
${PROJECT_NAME}
main.cpp
)
target_link_libraries(
${PROJECT_NAME}
fltk
ws2_32
User32
comctl32
GdiPlus
)
点击CLion
中的运行,出现hello world
窗口。
在点击运行后,构建信息出现undefined reference XXX
的错误信息,一般是链接静态库是找不到对应的静态库,所有一下报错信息找到对应的静态库,然后加在CMakelists.txt
中的target_link_libraries
中。
开始使用的是环境中g++
编译的fltk
静态库,在后面使用CLion
自带的g++
构建程序,由于两个g++
版本不一致,导致在构建应用时也会报undefined reference XXX
的错误,后来用CLion
自带的g++
重新编译静态库问题解决。