MacOS Intel下CMake构建LUAGLM时链接失败符号未找到问题
LUAGLM项目CMake构建链接错误修复方案
基础环境错误修复
构建初始阶段报的两个编译器检测错误是Xcode开发环境路径配置异常导致:
ld: library not found for -lSystem ld: library not found for -lc++
先执行命令重置Xcode命令行工具路径:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
执行后运行xcrun --show-sdk-path验证,能正常输出MacOS SDK路径即修复完成。
glm.so链接未定义符号修复
链接阶段报glm_pushmat(lua_State*, glmMatrix const&)等符号找不到,核心原因是GLM绑定模块的编译源文件没有被完整加入构建列表:
- 打开项目根目录
CMakeLists.txt,找到声明glm动态模块的add_library(glm ...)段落 - 从当前构建日志看,仅编译了
libs/glm_binding/lglmlib.cpp,同目录下实现矩阵、向量等接口的cpp文件(如glm_matrix.cpp、glm_vec.cpp、glm_quat.cpp等)未被加入编译列表,把这些文件补全到源文件列表中,示例配置:
add_library(glm MODULE libs/glm_binding/lglmlib.cpp libs/glm_binding/glm_matrix.cpp libs/glm_binding/glm_vec.cpp libs/glm_binding/glm_quat.cpp )
- 给glm目标补充正确的头文件搜索路径和链接依赖:
target_include_directories(glm PRIVATE ${CMAKE_SOURCE_DIR}/libs/glm ${LUA_INCLUDE_DIR} ) target_link_libraries(glm PRIVATE liblua_static)
- macOS平台编译Lua动态模块需要追加链接参数,避免Lua符号查找错误:
set_target_properties(glm PROPERTIES LINK_FLAGS "-undefined dynamic_lookup" PREFIX "" SUFFIX ".so" )
- 所有配置修改完成后,删除原有build目录全量缓存,重新执行CMake配置与编译流程即可。
内容的提问来源于stack exchange,提问作者gwizardry
相关产品推荐
相关产品推荐

