2017-05-16 298 views
0

我已经停留了一段时间了,我无法弄清楚如何让freeglut工作。我以为我知道它要求我做什么,所以我添加了set(prefix_path)行,但它没有做任何事情。我应该写我自己的freeglut-config.cmake还是什么?CMake在Clion的窗口中找不到freeglut

注:我使用的MinGW包freeglut从这个website

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. 

回答

2

如果你的应用是GLUT兼容 ,它没有使用freeglut的任何扩展名,那么最好搜索GLUT而不是FREEGLUT:命令使用

find_package(GLUT REQUIRED) 

“查找”的剧本已经被运入CMake的发行版,并且也freeglut它搜索。

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

如果你的应用需要正是freeglut(即,使用了一些它的扩展不相容与其他GLUT实现的),你需要船舶您的包裹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

+0

我不确定这有帮助,现在我得到一个不同的错误:https://hastebin.com/cuzohiwada.vbs。我用这个家伙find.cmake https://github.com/PDAL/PDAL/blob/master/cmake/modules/FindFreeGLUT.cmake – lbenedetto

+0

看起来你的图书馆是**不兼容**与MinGW。请注意,对于glew函数有未定义的引用,这些与GLUT或freeglut无关。 – Tsyvarev

+0

所以提供的windows二进制文件(http://glew.sourceforge.net/)将不起作用?我将不得不从源码编译我自己的? – lbenedetto