CMake не может найти freeglut-3.0.0

Freeglut-3.0.0 собирается с помощью cmake (файлы сборки MinGW) и mingw, а затем успешно устанавливается с mingw32-make install в C:/Program Files (x86)/freeglut,

мой CMakeLists.txt является:

    cmake_minimum_required(VERSION 3.7)

    project(math_tests)

    set(TESTS_SOURCES tests.cpp gl_core_3_3.c)
    set(CMAKE_CXX_STANDARD 11)

    # 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})
    link_directories(${OpenGL_LIBRARY_DIRS})
    add_definitions(${OpenGL_DEFINITIONS})
    if(NOT OPENGL_FOUND)
        message(ERROR "OPENGL not found!")
    endif(NOT OPENGL_FOUND)

    add_executable(tests ${TESTS_SOURCES})
    target_link_libraries(tests math ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES})

Теперь CMake печатает ошибку: Could NOT find GLUT (missing: GLUT_glut_LIBRARY).

Я не могу понять, что я делаю неправильно.

1 ответ

Решение

Ваше заявление файла CMakeLists.txt

find_package(GLUT REQUIRED)

собирается выполнить этот код из FindGLUT.cmake

find_library( GLUT_glut_LIBRARY NAMES glut glut32 freeglut
    PATHS
    ${OPENGL_LIBRARY_DIR}
    ${GLUT_ROOT_PATH}/Release
    )

а также find_library в вашем сценарии не может найти ни одного из glut glut32 freeglut библиотеки, потому что он не знает, где они находятся (которые для вас находятся под C:/Program Files (x86)/freeglut).

В вашем случае вы могли бы установить ${OPENGL_LIBRARY_DIR} в правильный каталог, в котором находится файл freeglut.dll, например:

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

учитывая, что файл находится под C:/Program Files (x86)/freeglut/lib каталог.

Другие вопросы по тегам