首页 > 解决方案 > 如何让 CMake 在 Windows 上找到 freeglut?

问题描述

我在 Windows 上工作,我想在 CMake 中创建一个独立于操作系统的项目。我也想将 OpenGL 与 freeglut 一起使用。

到目前为止,我的CMakeLists.txt看起来像这样:

project (visualizer)

set(GLUT_INCLUDE_DIR "C:/Program Files (x86)/freeglut/include")
set(OPENGL_LIBRARY_DIR "C:/Program Files (x86)/freeglut/lib")

# GLUT
find_package(GLUT REQUIRED)
include_directories(${GLUT_INCLUDE_DIR})
if(NOT GLUT_FOUND)
    message(ERROR "GLUT not found!")
endif(NOT GLUT_FOUND)

# OpenGL
find_package(OpenGL REQUIRED)
include_directories(${OpenGL_INCLUDE_DIRS})
if(NOT OPENGL_FOUND)
    message(ERROR "OPENGL not found!")
endif(NOT OPENGL_FOUND)

add_executable(visu visualizer.cpp)
target_link_libraries(visu ${OPENGL_LIBRARIES} ${GLUT_LIBRARY})

我必须明确定义 and 的路径GLUT_INCLUDE_DIROPENGL_LIBRARY_DIR否则 cmake 会给我这个错误:

CMake 错误:/Program Files/CMake/share/cmake-3.14/Modules/FindPackageHandleStandardArgs.cmake:137(消息):找不到 GLUT(缺少:GLUT_INCLUDE_DIR)

据我所知,这应该由findglut.cmake. 我的意思是,我没有专业知识来找出它会在哪里搜索 lib,但我认为这部分findglut.cmake应该这样做:

if (WIN32)
  find_path( GLUT_INCLUDE_DIR NAMES GL/glut.h
    PATHS  ${GLUT_ROOT_PATH}/include )
  find_library( GLUT_glut_LIBRARY_RELEASE NAMES glut glut32 freeglut
    PATHS
    ${OPENGL_LIBRARY_DIR}
    ${GLUT_ROOT_PATH}/Release
    )
  find_library( GLUT_glut_LIBRARY_DEBUG NAMES freeglutd
    PATHS
    ${OPENGL_LIBRARY_DIR}
    ${GLUT_ROOT_PATH}/Debug
    )
  mark_as_advanced(GLUT_glut_LIBRARY_RELEASE GLUT_glut_LIBRARY_DEBUG)
  select_library_configurations(GLUT_glut)
else ()

我的实际问题是:我应该将 freeglut 文件放在哪里,以便 CMake 无需任何额外努力就能找到它们?

标签: c++openglcmakeglutfreeglut

解决方案


推荐阅读