使用CMake编译GLUT项目出现未定义引用错误该如何解决?
可能的解决方案
1. 修正CMake冗余/错误配置
你当前的CMake配置存在冗余项,且可能用到了非标准变量导致引入路径错误,替换原有GLUT和OpenGL配置段为以下内容:
# GLUT 配置 find_package(GLUT REQUIRED) # OpenGL 配置 find_package(OpenGL REQUIRED) # 统一引入头文件路径,删除原有的冗余include_directories、link_directories配置 target_include_directories(${PROJECT_NAME} PRIVATE ${GLUT_INCLUDE_DIRS} ${OPENGL_INCLUDE_DIRS} ) # 若使用静态版freeglut,取消下一行注释 # target_compile_definitions(${PROJECT_NAME} PRIVATE FREEGLUT_STATIC) # 调整链接顺序,GLUT库放在OpenGL前面,适配GCC等编译器的依赖顺序要求 target_link_libraries(${PROJECT_NAME} ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES} )
2. 确认库架构匹配
在CMake中添加日志打印,确认找到的GLUT库路径和架构是否和项目编译目标一致:
message("-- 找到的GLUT库路径: ${GLUT_LIBRARIES}")
运行CMake配置后查看输出的路径,若你编译64位项目但路径指向32位的GLUT库,需要替换对应架构的GLUT库,或者调整项目编译架构。
3. 排查GLUT版本兼容问题
若你使用的是老版SGI GLUT,Windows平台下仅提供32位库,编译64位项目必然会出现链接错误,建议替换为兼容64位的freeglut或者OpenGLUT替代。
内容的提问来源于stack exchange,提问作者Ids
相关产品推荐
相关产品推荐

