【发布时间】:2022-01-08 11:12:03
【问题描述】:
我需要为一个项目使用 GLUT(我知道 GLUT 是一个古老的库)。当我运行项目时,我得到未定义的引用错误。这是我的 CMake 文件:
// Other code
# GLUT
find_package(GLUT REQUIRED)
include_directories(${GLUT_INCLUDE_DIR})
target_include_directories(${PROJECT_NAME} PRIVATE "${GLUT_DIR}/include")
if(GLUT_FOUND)
message("-- GLUT found")
endif(GLUT_FOUND)
# OpenGL
find_package(OpenGL REQUIRED)
include_directories(${OpenGL_INCLUDE_DIRS})
link_directories(${OpenGL_LIBRARY_DIRS})
add_definitions(${OpenGL_DEFINITIONS})
if(OPENGL_FOUND)
message("-- OPENGL found")
endif(OPENGL_FOUND)
target_link_libraries(${PROJECT_NAME} ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES})
当我重新加载 CMake 项目时,我收到消息“--找到 GLUT”和“--找到 OPENGL”,因此查找库不是问题。 image of cmake messages 运行我的项目时,出现未定义的引用错误: image of the error message 我查看了有关 stackoverflow 的类似问题,但提供的解决方案不适用于我的情况。 这是我的文件结构: image of my file structure
有人知道可能的解决方案吗?
【问题讨论】:
-
显示实际错误比描述你得到“错误”的事实有用1000倍。
-
add_library("glut" "${GLUT_DIR}/glut32.lib" "${GLUT_DIR}/glut.h")似乎很奇怪。find_package(GLUT REQUIRED)应该为 GLUT 引入目标 -
你是对的。我可能会添加它以寻找解决我的问题的方法。我担心这不是问题的根源。我仍然遇到同样的错误
-
您可能希望在 CMakeLists.txt 的 target_link_libraries() 之前添加 MESSAGE(STATUS GLUT_LIBRARIES="${GLUT_LIBRARIES}") 并查看 cmake 配置期间的输出
-
@ids:Stack Overflow 不鼓励使用 images 来表示 text。相反,将文本(在您的情况下为错误消息)粘贴到问题帖子中。另见How to Ask。