c++使用sol2.hpp linux环境+cmake

609 阅读1分钟

背景

sol是一个用于c++绑定lua脚本的库,仅由头文件组成,提供了大量的API接口。

笔者在使用的时候出现了一些问题,花了两天空闲时间去解决,希望能帮到其他用户。

安装

Lua

官网(www.lua.org/start.html) 上有明确的安装教程

curl -R -O http://www.lua.org/ftp/lua-5.4.4.tar.gz
tar zxf lua-5.4.4.tar.gz
cd lua-5.4.4
make linux test 

如果,没报错并且在/usr/local/include/下产生一些文件(lua.h,lua.hpp等),那么就成功了。

sol2

去网站(github.com/Rapptz/sol) 下载一个sol.hpp

git clone git@github.com:Rapptz/sol.git

make install

解压后make install,同样/usr/local/include/会生成一个sol文件夹

编译

此时在你的c++项目中#include<sol/sol.hpp>即可使用sol

但这个时候会有一些问题出现。

笔者使用的是cmake来构建,因此下面的操作均为修改CMakeLists.txt

首先你需要将编译参数设置为c++17以上,亲测,c++11不行,c++14会少一些报错,但也有问题。

其次会报:undefined reference to 'lua_pushlstring'

image.png

这里你需要将lua库连接到你的可执行文件上

target_link_libraries(main lua) # lua库要连接进去

然后会报:undefined reference to 'dlsym'

image.png

这里也是,需要将dl库连接到你的可执行文件上

target_link_libraries(main dl) # dlsym