Linux、C++、Lua 5.3、CMake、未定义引用

我正在尝试在我的C ++程序中使用Lua。我的操作系统是Linux Manjaro 15.12。我下载了Lua 5.3源代码,并将其编译为C ++代码(我真的需要异常处理而不是longjmp),使用以下命令:

make "CC = g ++" linux

然后使用 sudo make install 将Lua安装在/usr/local中。一切看起来都很好。我的CMake版本似乎已经更新:

cmake --version 
cmake version 3.4.1

在我的CMake文件中,我可以这样找到Lua:

find_package(Lua REQUIRED)
include_directories(${LUA_INCLUDE_DIR})

message("   *** Lua include: $ {LUA_INCLUDE_DIR}")
message("   *** Lua lib: $ {LUA_LIBRARIES}")

在运行此命令后:

cd build
cmake -G“Unix Makefiles” ..

正确检测到/usr/local/include中的include文件夹,但是库本身被发现为/usr/lib64/liblua5.1.so;/usr/lib64/libm.so,这不是我所做的安装(它的版本是5.1,我想要5.3)。 CMake说:

Found Lua: /usr/lib64/liblua5.1.so;/usr/lib64/libm.so (found version "5.3.2")

就像它在“混合”两个版本。 运行_make_会产生许多未定义的引用。 以前在我的CMake文件中,我找到了其他库(我编译的SDL2,OpenGL,glew),它们似乎可以工作。 我得到的唯一错误是Lua库。 当然,我将库添加到了我的_target \ _link_libraries_命令中

我该怎么办? (我不介意如果我必须消除旧的Lua版本,只要它不会破坏我的操作系统)

点赞
用户2183287
用户2183287

您可以通过手动设置 Lua 库路径来解决此问题:

CMAKE_ARGS:="-DLUA_LIBRARY=[您的 Lua 5.3 so 安装路径]\;dl"
2016-01-10 10:50:45