首先介绍一下Nana库,Nana库是一个使用C++11开发的轻量级开源跨平台界面库。可以非常方便地开发GUI界面(作者好像是中国人。
官网地址:http://nanapro.org/zh-cn/
Github地址:https://github.com/cnjinhao/nana
官网给出安装步骤:https://github.com/qPCR4vir/nana-docs/wiki/Installation
下面讲讲我是怎么安装的
1.依赖库安装
根据我在Ubuntu 20.04下的安装经验,Nana库的编译过程主要用到了X11、Xft、Xcursor、asound这几个库,其中asound是Nana库编译完,编译demo的时候要用的,也要装上。
sudo apt-get install libx11-dev
sudo apt-get install libxft-dev
sudo apt-get install libxcursor-dev
sudo apt install libasound2-dev
这里分享一个小窍门,可以使用apt-file命令根据缺少的头文件查找安装的库名称,如下图所示,非常的方便。
2.编译安装
安装完上面的库就可以直接用nana/build/makefile下的makefile文件编译Nana库了。
sudo make
sudo make install
3.程序编译
程序的编译可以参考在makefile文件目录下的readme.md中的makefile格式,把NANAPATH改成你的Nana源文件所在目录,BIN改成要生成的文件名,SOURCES改成应用要用到的所有源文件名即可。
GCC = g++
NANAPATH = [The folder of Nana C++ Library]
BIN = [The bin file what you want to create.]
SOURCES = [The source file of your application.]
NANAINC = $(NANAPATH)/include
NANALIB = $(NANAPATH)/build/bin
INCS = -I$(NANAINC)
LIBS = -L$(NANALIB) -lnana -lX11 -lpthread -lrt -lXft -lpng -lasound -lfontconfig
LINKOBJ = $(SOURCES:.cpp=.o)
$(BIN): $(LINKOBJ) $(NANALIB)/libnana.a
$(GCC) $(LINKOBJ) $(INCS) $(LIBS) -o $(BIN) -std=c++0x
.cpp.o:
$(GCC) -g -c $< -o $@ $(INCS) -std=c++0x
$(NANALIB):
make -f $(NANAPATH)/build/makefile/makefile
clean:
rm -f $(LINKOBJ)
但是我这样之后会出现以下undefined reference to `std::experimental::filesystem'的问题:
上网搜了一下,发现原来是要链接stdc++fs库,在链接的时候加上这个库就没问题了,修改后的链接语句如下:
$(BIN): $(LINKOBJ) $(NANALIB)/libnana.a
$(GCC) $(LINKOBJ) $(INCS) $(LIBS) -o $(BIN) -std=c++0x -lstdc++fs
写了一个带动态进度条的小程序测试了一下,成功生成!完