GitHub Actions中CMake无法定位Lua的问题解决请求
解决CMake在GitHub Actions中找不到Lua的问题
问题根源在于你使用的leafo/gh-actions-lua会将Lua安装在$HOME/.lua目录下,而CMake的find_package(Lua)默认只会搜索系统标准路径,因此无法识别到这个自定义位置的Lua。下面提供两种可行的解决方法:
方法一:在CMake命令中手动指定Lua路径
修改GitHub Actions配置里的useCmake步骤,通过-D参数直接告诉CMake Lua的头文件和库文件位置:
- name: useCmake run: cmake -B build -S . -DLUA_INCLUDE_DIR=$HOME/.lua/include/lua5.1 -DLUA_LIBRARIES=$HOME/.lua/lib/liblua.so
注:Lua 5.1的头文件通常放在include/lua5.1子目录下,Linux环境下库文件名为liblua.so。
方法二:修改CMakeLists.txt适配自定义安装路径
如果希望CMakeLists.txt能同时兼容本地开发和CI环境,可以手动指定Lua的搜索路径,替换原有的find_package(Lua REQUIRED):
cmake_minimum_required (VERSION 3.5) project (myLuaTest) # 指定gh-actions-lua安装Lua的根目录 set(LUA_INSTALL_PREFIX $ENV{HOME}/.lua) # 手动查找Lua头文件和库文件 find_path(LUA_INCLUDE_DIR lua.h PATHS ${LUA_INSTALL_PREFIX}/include/lua5.1 NO_DEFAULT_PATH ) find_library(LUA_LIBRARIES NAMES lua5.1 lua PATHS ${LUA_INSTALL_PREFIX}/lib NO_DEFAULT_PATH ) # 检查是否找到Lua if(NOT LUA_INCLUDE_DIR OR NOT LUA_LIBRARIES) message(FATAL_ERROR "无法在${LUA_INSTALL_PREFIX}路径下找到Lua") endif() # 后续可添加编译链接逻辑(示例) # add_executable(myLuaTest main.cpp) # target_link_libraries(myLuaTest PRIVATE ${LUA_LIBRARIES}) # target_include_directories(myLuaTest PRIVATE ${LUA_INCLUDE_DIR})
两种方法任选其一即可解决问题,方法一无需修改CMake配置,适合快速适配CI环境;方法二更通用,能覆盖本地开发场景。
内容的提问来源于stack exchange,提问作者Don'tDownVote
相关产品推荐
相关产品推荐

