【问题标题】:CMake cannot find freeglut on windows in ClionCMake 在 Clion 的 Windows 上找不到 freeglut
【发布时间】:2021-03-06 04:03:46
【问题描述】:

我已经被困了一段时间,我不知道如何让 freeglut 工作。我以为我知道它要我做什么,所以我添加了 set(prefix_path) 行,但它没有做任何事情。我应该编写自己的 freeglut-config.cmake 还是什么?

注意:我正在使用来自 website 的 Freeglut for MinGW 包

CMake 文件:

cmake_minimum_required(VERSION 3.7)
project(HW1)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES Triangle.cpp)
set(CMAKE_PREFIX_PATH "C:/freeglut")

find_package(GLEW REQUIRED STATIC)
find_package(FREEGLUT REQUIRED)
find_package(OPENGL REQUIRED)

include_directories(${FREEGLUT_INCLUDE_DIRS} ${GLEW_INCLUDE_DIRS} ${OPENGL_INCLUDE_DIRS})
link_directories(${FREEGLUT_LIBRARY_DIRS} ${GLEW_LIBRARY_DIRS} ${OPENGL_LIBRARY_DIRS})
add_definitions(${FREEGLUT_DEFINITIONS} ${GLEW_DEFINITIONS} ${OPENGL_DEFINITIONS})

add_executable(HW1 ${SOURCE_FILES})
target_link_libraries(HW1 ${FREEGLUT_LIBRARIES} ${GLEW_LIBRARIES} ${OPENGL_LIBRARIES})

完全错误:

CMake Error at CMakeLists.txt:8 (find_package):
  By not providing "FindFREEGLUT.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "FREEGLUT",
  but CMake did not find one.

  Could not find a package configuration file provided by "FREEGLUT" with any
  of the following names:

    FREEGLUTConfig.cmake
    freeglut-config.cmake

  Add the installation prefix of "FREEGLUT" to CMAKE_PREFIX_PATH or set
  "FREEGLUT_DIR" to a directory containing one of the above files.  If
  "FREEGLUT" provides a separate development package or SDK, be sure it has
  been installed.

【问题讨论】:

    标签: c++ windows cmake mingw clion


    【解决方案1】:

    如果您的应用程序是GLUT-compatible,它不使用任何freeglut 扩展,那么最好搜索GLUT 而不是FREEGLUT

    find_package(GLUT REQUIRED)
    

    这个命令使用的“查找”脚本已经被运送到 CMake 发行版中,它也搜索 freeglut。

    (注意,包含目录和链接库的命令变量分别为GLUT_INCLUDE_DIRGLUT_LIBRARY)。

    如果您的应用程序需要完全 freeglut(即,使用它的某些扩展与其他 GLUT 实现不兼容),您需要运送您的包 strong> 使用 FindFREEGLUT.cmake 脚本并相应调整 CMAKE_MODULE_PATH 变量:

    # Assuming you have <source-dir>/cmake/FindFREEGLUT.cmake
    list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
    find_package(FREEGLUT REQUIRED)
    

    你可以在网上找到已有的脚本,或者自己写,比如here


    无论如何,如果您将 freeglut 安装到非系统位置,则需要提示 CMake。例如,通过调整 CMAKE_PREFIX_PATH

    【讨论】:

    • 我不确定这是否有帮助,现在我遇到了另一个错误:hastebin.com/cuzohiwada.vbs。我用这个家伙 find.cmake github.com/PDAL/PDAL/blob/master/cmake/modules/…
    • 看起来您的库与 MinGW不兼容。请注意,未定义对 glew 函数的引用,这些与 GLUT 或 freeglut 无关。
    • 所以提供的 Windows 二进制文件 (glew.sourceforge.net) 不起作用?我必须从源代码编译我自己的吗?
    • 是的,只是 Windows 二进制文件与 MinGW 不兼容。您需要专门为 MinGW 构建的二进制文件。看到 blogpost 和 SO question 它指的是。
    猜你喜欢
    • 1970-01-01
    • 2015-10-19
    • 2017-09-25
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多