使用glew 1.13.0和CMake 3.4.0构建VS2015 x64项目

时间:2015-11-17 10:16:06

标签: cmake glew

如何使用glew 1.13.0和CMake 3.4.0构建VS2015 x64项目?

我准备了一个最小的演示,可以在这里找到:https://bitbucket.org/Vertexwahn/cmakedemos/src/2fbbc02b2c0567319d7be070b34391b1ef35048d/GlewDemo/?at=default

的CMakeLists.txt:

newString[0]

我从这里下载了预建的二进制文件:http://sourceforge.net/projects/glew/files/glew/1.13.0/glew-1.13.0-win32.zip/download

并将GLEW_INCLUDE_DIR的路径设置为相应的目录(“C:\ Users \ no68koc \ Downloads \ glew-1.13.0 \ include”)

但是CMake给了我一些错误:

cmake_minimum_required ( VERSION 2.8)
project ( GlewDemo )

find_package(GLEW REQUIRED)

set ( SRCS main.cpp )

add_executable(GlewDemo ${SRCS})

target_link_libraries(GlewDemo glew32s)

它是如何正常工作的?

2 个答案:

答案 0 :(得分:3)

错误消息

Could NOT find GLEW (missing: GLEW_LIBRARY)

是由FindXXX.cmake脚本生成的标准消息(通过find_package(XXX)调用),它无法设置(推断)某些CMake变量,因此假设未找到整个包

大多数FindXXX.cmake脚本都在描述(在评论中),哪些变量是由脚本为用户设置的。

但是只有其中几个描述了用户如何帮助脚本,以防脚本根本找不到所需的包,或者用户希望脚本找到特定的包安装而不是默认的安装。

在帮助FindXXX.cmake脚本方面没有通用的方法,在大多数情况下,应该为知道变量分析脚本代码,这可能有所帮助。

在给定的情况下(使用GLEW包),分析CMake提供的FindGLEW.cmake脚本显示,find_path()调用(设置GLEW_INCLUDE_DIR变量)和{{1} call(设置find_library()变量)不使用提示(HINT或PATH选项)进行搜索。但是有两个标准提示,这两个命令都使用了这些提示。其中一个提示是find_pathGLEW_LIBRARY目录和find_library的类似目录。

所以你可以使用

${CMAKE_PREFIX_PATH}/include

提示find_library()和find_path()也可以在此目录下搜索。 或者,您可以在GUI中(例如在Visual Studio内部)或通过命令行在CMake缓存中设置list(APPEND CMAKE_PREFIX_PATH "C:\Users\no68koc\Downloads\glew-1.13.0") 变量:

CMAKE_PREFIX_PATH

(请注意,在cmake -DCMAKE_PREFIX_PATH:PATH=C:\Users\no68koc\Downloads\glew-1.13.0 中使用list(APPEND ...)代替set(...)时,如果在缓存中设置了变量,则不会覆盖变量。

您可以使用其他三维FindGLEW.cmake脚本

您可以将其下载到您的项目中(例如,发送到CMakeLists.txt)并发出

cmake/FindGLEW.cmake

告诉set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) 使用此脚本而不是默认脚本。

给定脚本使用

find_package()

目录(及其子目录)作为在${GLEW_LOCATION} find_path()中搜索的提示(在PATH命令的选项下)。因此,您可以将find_library()变量设置为安装目录:

GLEW_LOCATION

让生活有效。或者(并且最好),可以在缓存中设置此变量。

另外,给定set(GLEW_LOCATION "C:\Users\no68koc\Downloads\glew-1.13.0") 脚本使用

FindGLEW.cmake

目录作为提示。这意味着设置$ENV{GLEW_LOCATION} 环境变量也会有所帮助。

答案 1 :(得分:1)

CMake找不到您的GLEW。因此,你必须暗示CMake。

要么将GLEW包含在CMake查找组件的某个地方。想到安装GLEW。

或者您手动定义变量。你已经为GLEW_INCLUDE_DIR做了那个。您还必须定义GLEW_LIBRARY 它必须是名为glew32,glew或glew32s的库的路径。使用Unices时,它应该是lib * .so可能还有一些额外的版本号。对于Windows,它应该是* .dll或* .lib。