3

我的项目依赖于 GLEW 并且是用 CMake 构建的,所以我从这里http://code.google.com/p/nvidia-texture-tools/source/browse/trunk/cmake/FindGLEW.cmake 获取了 FindGLEW.cmake? r=96并写find_package(GLEW REQUIRED)在我的 CMakeLists.txt 中。问题是我正在使用集群 PC,有几个版本的 GLEW 可用。一个版本被存储在/usr/lib其中不是最新的。最新版本存储在/opt/local/lib64. 这是我要链接的版本。所以我在 GLEW_LIBRARY 路径下添加了 FindGLEW.cmake 的路径。问题是makefile总是链接到旧版本,但我需要最新版本(1.7)来使用类似的东西GL_PATCHESGL_PATCH_PARAMETERS等等。我能知道如何强制 CMake 使用较新的版本,就像 FindBoost.cmake 的情况一样。一种解决方案是删除旧的,但这不是一种选择。我还更改了 GLEW_LIBRARY 列表中路径的顺序,但没有成功。

在我刚刚写LDDFLAGS = -L/opt/local/lib64 -lGLEW的旧 Makefile 中,路径绝对清晰,但现在使用 CMake 我想使用查找功能,但想要更喜欢特定版本。

4

1 回答 1

2

我使用它静态链接到特定位置的自定义编译 GLEW 库:

#GLEW libraries
add_library(glew_static STATIC IMPORTED)
set_target_properties(glew_static PROPERTIES
    IMPORTED_LOCATION /home/ryan/DevLibrary/glew-1.9.0/lib/libGLEW.a)
target_link_libraries(smolder glew_static)

有了这个,你可以删除

find_package(GLEW REQUIRED)

您也可以将它与共享库一起使用,只需从 add_library 中删除 STATIC 关键字。

于 2012-12-19T21:18:46.857 回答