【发布时间】:2022-01-15 17:47:22
【问题描述】:
在我今天更新系统之前,一切都很顺利。 我的 CMakeList.txt 看起来像这样:
cmake_minimum_required(VERSION 2.7)
project(p3)
# Set the C++ Standard
set(CMAKE_CXX_STANDARD 17)
# Set the compiling flags
set(CMAKE_CXX_FLAGS "-Werror -pedantic -Wall -Wextra -Wvla")
# Find the OpenGL library
find_package(OpenGL REQUIRED)
include_directories(${OPENGL_INCLUDE_DIR})
# Find the GLUT library
find_package(GLUT REQUIRED)
include_directories(${GLUT_INCLUDE_DIR})
# Build
add_executable(p3 ...)
target_link_libraries(p3 ${GLUT_LIBRARY} ${OPENGL_LIBRARY} m)
但是更新之后就出错了! 编译时有很多错误: (我用的是freeglut)
undefined reference to `glutInit'
ndefined reference to `glutInitWindowSize'
undefined reference to `glutInitWindowPosition'
undefined reference to `glutInitDisplayMode'
undefined reference to `glutCreateWindow'
undefined reference to `glutDisplayFunc'
undefined reference to `glutIdleFunc'
undefined reference to `glutMainLoop'
似乎 cmake 无法链接 glut 库。
但是glVertex2f 等其他功能也可以。
而且使用g++编译也是可以的。
现在我必须将我的 CMakeList 更改为:
// ...
target_link_libraries(p3 ${GLUT_LIBRARY} ${OPENGL_LIBRARY} glut m)
在我添加 glut 后,它又可以工作了。
为什么会发生这种情况?
我该如何解决?
有用信息:
cmake version 3.22.1
【问题讨论】:
-
如果您拥有 CMake 3.22,则没有任何理由将 2.7 设置为最低要求。我几乎可以保证你的项目在 2.7 中不会像你期望的那样工作