使用 glew 1.13.0 和 CMake 3.4.0 构建 VS2015 x64 项目
Building a VS2015 x64 project using glew 1.13.0 and CMake 3.4.0
如何使用 glew 1.13.0 和 CMake 3.4.0 构建 VS2015 x64 项目?
我准备了一个最小的演示,可以在这里找到:https://bitbucket.org/Vertexwahn/cmakedemos/src/2fbbc02b2c0567319d7be070b34391b1ef35048d/GlewDemo/?at=default
CMakeLists.txt:
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)
我从这里下载了预构建的二进制文件: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 Error at C:/Program Files (x86)/CMake/share/cmake-3.4/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
Could NOT find GLEW (missing: GLEW_LIBRARY)
Call Stack (most recent call first):
C:/Program Files (x86)/CMake/share/cmake-3.4/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
C:/Program Files (x86)/CMake/share/cmake-3.4/Modules/FindGLEW.cmake:44 (find_package_handle_standard_args)
CMakeLists.txt:4 (find_package)
Configuring incomplete, errors occurred!
See also "C:/build/vs2015/GlewDemo/CMakeFiles/CMakeOutput.log".
它如何正常工作?
CMake 无法找到您的 GLEW。因此你必须提示 CMake.
要么将 GLEW 包含到某个地方,CMake 将在其中查找组件。想到安装 GLEW。
或者您手动定义变量。您已经为 GLEW_INCLUDE_DIR
做到了。你也必须定义 GLEW_LIBRARY
。
它必须是名为 glew32、glew 或 glew32s 的库的路径。对于 Unices,它应该是 lib*.so 可能还有一些额外的版本号。对于 Windows,它应该是 *.dll 或 *.lib。
错误信息
Could NOT find GLEW (missing: GLEW_LIBRARY)
是由 FindXXX.cmake
脚本(通过 find_package(XXX)
调用)生成的标准消息,它无法设置(推断)一些 CMake 变量,因此 假定整个包找不到.
大多数 FindXXX.cmake 脚本描述(在评论中),哪些变量由脚本 为用户设置 。
但其中只有几个描述了,用户如何帮助脚本以防脚本根本找不到所需的包,或者如果用户希望脚本找到特定的包安装而不是默认的。
没有通用的方法来帮助 FindXXX.cmake
脚本,在大多数情况下,应该分析脚本的代码以了解变量,这会有所帮助。
在给定的情况下(使用 GLEW
包)分析 CMake 提供的 FindGLEW.cmake script reveals, that both find_path()
call (which set GLEW_INCLUDE_DIR
variable) and find_library()
call (which set GLEW_LIBRARY
variable) use no hints (HINT or PATH options) for search. But there are standard hints, which are used by both of this commands. One of these hints is ${CMAKE_PREFIX_PATH}/include
directory for find_path and similar directory for find_library。
所以你可以使用
list(APPEND CMAKE_PREFIX_PATH "C:\Users\no68koc\Downloads\glew-1.13.0")
提示 find_library() 和 find_path() 也在该目录下搜索。
或者,您可以在 GUI 中(例如在 Visual Studio 内)或通过命令行在 CMake 缓存中设置 CMAKE_PREFIX_PATH
变量:
cmake -DCMAKE_PREFIX_PATH:PATH=C:\Users\no68koc\Downloads\glew-1.13.0
(请注意,在 CMakeLists.txt
中使用 list(APPEND ...)
而不是 set(...)
不会覆盖变量,以防它也在缓存中设置)。
您可以使用另一个 3d 派对 FindGLEW.cmake 脚本
您可以将其下载到您的项目中(例如,cmake/FindGLEW.cmake
)并发布
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
告诉 find_package()
使用此脚本而不是默认脚本。
给定脚本使用
${GLEW_LOCATION}
目录(及其子目录)作为在 find_path()
和 find_library()
中搜索的提示(在 PATH 命令的选项下)。所以你可以设置GLEW_LOCATION
变量到安装目录:
set(GLEW_LOCATION "C:\Users\no68koc\Downloads\glew-1.13.0")
为了让事情顺利进行。或者(最好),可以在缓存中设置此变量。
此外,鉴于 FindGLEW.cmake
脚本使用
$ENV{GLEW_LOCATION}
目录作为提示。这意味着设置 GLEW_LOCATION
环境变量 也会有所帮助。
如何使用 glew 1.13.0 和 CMake 3.4.0 构建 VS2015 x64 项目?
我准备了一个最小的演示,可以在这里找到:https://bitbucket.org/Vertexwahn/cmakedemos/src/2fbbc02b2c0567319d7be070b34391b1ef35048d/GlewDemo/?at=default
CMakeLists.txt:
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)
我从这里下载了预构建的二进制文件: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 Error at C:/Program Files (x86)/CMake/share/cmake-3.4/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
Could NOT find GLEW (missing: GLEW_LIBRARY)
Call Stack (most recent call first):
C:/Program Files (x86)/CMake/share/cmake-3.4/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
C:/Program Files (x86)/CMake/share/cmake-3.4/Modules/FindGLEW.cmake:44 (find_package_handle_standard_args)
CMakeLists.txt:4 (find_package)
Configuring incomplete, errors occurred!
See also "C:/build/vs2015/GlewDemo/CMakeFiles/CMakeOutput.log".
它如何正常工作?
CMake 无法找到您的 GLEW。因此你必须提示 CMake.
要么将 GLEW 包含到某个地方,CMake 将在其中查找组件。想到安装 GLEW。
或者您手动定义变量。您已经为 GLEW_INCLUDE_DIR
做到了。你也必须定义 GLEW_LIBRARY
。
它必须是名为 glew32、glew 或 glew32s 的库的路径。对于 Unices,它应该是 lib*.so 可能还有一些额外的版本号。对于 Windows,它应该是 *.dll 或 *.lib。
错误信息
Could NOT find GLEW (missing: GLEW_LIBRARY)
是由 FindXXX.cmake
脚本(通过 find_package(XXX)
调用)生成的标准消息,它无法设置(推断)一些 CMake 变量,因此 假定整个包找不到.
大多数 FindXXX.cmake 脚本描述(在评论中),哪些变量由脚本 为用户设置 。
但其中只有几个描述了,用户如何帮助脚本以防脚本根本找不到所需的包,或者如果用户希望脚本找到特定的包安装而不是默认的。
没有通用的方法来帮助 FindXXX.cmake
脚本,在大多数情况下,应该分析脚本的代码以了解变量,这会有所帮助。
在给定的情况下(使用 GLEW
包)分析 CMake 提供的 FindGLEW.cmake script reveals, that both find_path()
call (which set GLEW_INCLUDE_DIR
variable) and find_library()
call (which set GLEW_LIBRARY
variable) use no hints (HINT or PATH options) for search. But there are standard hints, which are used by both of this commands. One of these hints is ${CMAKE_PREFIX_PATH}/include
directory for find_path and similar directory for find_library。
所以你可以使用
list(APPEND CMAKE_PREFIX_PATH "C:\Users\no68koc\Downloads\glew-1.13.0")
提示 find_library() 和 find_path() 也在该目录下搜索。
或者,您可以在 GUI 中(例如在 Visual Studio 内)或通过命令行在 CMake 缓存中设置 CMAKE_PREFIX_PATH
变量:
cmake -DCMAKE_PREFIX_PATH:PATH=C:\Users\no68koc\Downloads\glew-1.13.0
(请注意,在 CMakeLists.txt
中使用 list(APPEND ...)
而不是 set(...)
不会覆盖变量,以防它也在缓存中设置)。
您可以使用另一个 3d 派对 FindGLEW.cmake 脚本
您可以将其下载到您的项目中(例如,cmake/FindGLEW.cmake
)并发布
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
告诉 find_package()
使用此脚本而不是默认脚本。
给定脚本使用
${GLEW_LOCATION}
目录(及其子目录)作为在 find_path()
和 find_library()
中搜索的提示(在 PATH 命令的选项下)。所以你可以设置GLEW_LOCATION
变量到安装目录:
set(GLEW_LOCATION "C:\Users\no68koc\Downloads\glew-1.13.0")
为了让事情顺利进行。或者(最好),可以在缓存中设置此变量。
此外,鉴于 FindGLEW.cmake
脚本使用
$ENV{GLEW_LOCATION}
目录作为提示。这意味着设置 GLEW_LOCATION
环境变量 也会有所帮助。