c++ - CMake 无法在 Clion 的 Windows 上找到 freeglut

标签 c++ windows cmake mingw clion

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

注意:我正在使用这个 website 中的 MinGW 包的 freeglut

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.

最佳答案

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

find_package(GLUT REQUIRED)

此命令使用的“查找”脚本已发布到 CMake 发行版中,它也可以搜索 freeglut。

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

如果您的应用程序需要exactly 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

关于c++ - CMake 无法在 Clion 的 Windows 上找到 freeglut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43994489/

相关文章:

c++ - 为什么在构造函数中使用 this 指针的 QState 子类内的嵌套 QStateMachine 会导致外部状态机无法进行转换?

c++ - 为什么不能像这样传递参数?

windows - 如何在Windows(使用Qt Creator)上构建64位MinGW Qt应用程序

python - 从 PowerShell 语法错误运行 Python 脚本

c# - 有没有办法在 .NET 中唯一标识连接到 Windows PC 的任何存储介质?

OpenCV编译错误Linking CXX共享库../../lib/libopencv_highgui.so/lib/libbz2.so.1 : could not read symbols: File in wrong format

c++ - 如何根据 std::tm 对容器进行排序?

c++ - C++ 中的 Protobuf ParseDelimitedFrom 实现

c++ - 尝试在 Windows 上的 CLion+CMake+MinGW 中编译 OpenGL 4 Helloworld。 "undefined reference to ` _imp____glewCreateShader'“错误

c++ - 使用 cmake 将依赖项传播到仅 header 的 ExternalProject