2012-12-19 111 views
3

我的項目依賴於GLEW,並且使用CMake構建,所以我從這裏取了FindGLEW.cmake http://code.google.com/p/nvidia-texture-tools/source/browse/trunk/cmake/FindGLEW.cmake?r=96並在我的CMakeLists.txt中寫入了find_package(GLEW REQUIRED)。問題是我在一臺集羣PC上工作了幾個版本的GLEW。一個版本存儲在/usr/lib這不是最新的版本。最新版本存儲在/opt/local/lib64。這是我想鏈接的版本。所以我在GLEW_LIBRARY路徑下添加了FindGLEW.cmake的路徑。問題在於makefile始終與舊版本鏈接,但我需要使用最新版本(1.7)來使用像GL_PATCHES,GL_PATCH_PARAMETERS等等的東西。我可以如何強制CMake像使用FindBoost.cmake一樣使用新版本。一個解決方案是擦除舊的,但這不是一種選擇。我也改變了GLEW_LIBRARY列表中路徑的順序,但沒有成功。使用CMake與GLEW鏈接

在我的舊Makefile中,我只寫了LDDFLAGS = -L/opt/local/lib64 -lGLEW所以路徑是絕對清晰的,但現在用CMake我想使用查找功能,但想更喜歡特定的版本。

回答

1

我用這個在特定位置靜態鏈接到定製編譯GLEW lib目錄下:

#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關鍵字即可。

+5

這是相當不可移動的。使用find_package要好得多。 – allicoder