2016-10-26 38 views
0

私はこの[1]を読んでいますが、私のケースではCMakeはglewを見つけることができないと言います。CMakeはGLEWを見つけることができません

私はWindows上にあり、私のCMakeモジュールフォルダにはFindGLEW.cmakeファイルがあります。おそらくCMake-3.6をインストールするとそこに置かれます。私はsourceforgeでGLEWを見つけ、Windows用のzipファイルをダウンロードしました。解凍してC:\ Program Files \ glewにインストールしました。私自身のライブラリを作成してCMakeをビルドしてインストールしたとき、これがインストールされているデフォルトの場所なので、私はここでOKです。

私のCMakeLists.txtからの抜粋です:

find_package(GLEW REQUIRED) 
include_directories(${GLEW_INCLUDE_DIRS}) 
link_libraries(${GLEW_LIBRARIES}) 

CMakeのから実際のエラーメッセージは次のとおりです。

CMake Error at C:/Program Files/CMake/share/cmake-3.6/Modules/FindPackageHandleStandardArgs.cmake:148 (message): 
    Could NOT find GLEW (missing: GLEW_INCLUDE_DIR GLEW_LIBRARY) 
Call Stack (most recent call first): 
    C:/Program Files/CMake/share/cmake-3.6/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE) 
    C:/Program Files/CMake/share/cmake-3.6/Modules/FindGLEW.cmake:44 (find_package_handle_standard_args) 
    source/CMakeLists.txt:5 (find_package) 

それはFindGLEW.cmakeが壊れている可能ですか?私は他のFindXXXXX.cmakeファイルをいくつか見てきました。それらはそれぞれがかなりユニークな雪片のようなものです。だから、それが慣習に従っていると確信するのは難しいです。

[1] sourcesに探しLinking GLEW with CMake

答えて

2

、パッケージは、相対パスでGLEWを探しています。ディレクトリを含む見つけるために使用されるfind_pathため

  • <prefix>/include:これらの相対パスは、可変CMAKE_PREFIX_PATHのコンテンツを含む、異なるプレフィックスを使用して検索されます。
  • <prefix>/libfind_libraryであり、これはライブラリを見つけるために使用される。

と仮定C:/Program Files/glew/includeC:/Program Files/glew/libはあなたCMAKE_PREFIX_PATH変数にC:/Program Files/glewを追加し、存在します。ような何か:

include_directories(${GLEW_INCLUDE_DIRS}) 
link_libraries(${GLEW_LIBRARIES}) 

imported targetGlew::Glewを使用して削除することができる:以下の行があること

list(APPEND CMAKE_PREFIX_PATH "C:/Program Files/glew") 
find_package(GLEW REQUIRED) 

なおを追加するための

add_executable(foo ...) 
target_link_libraries(foo Glew::Glew) 
+0

感謝。ここであなたが投稿したものに加えて私が学んだことがあります。 find_packageは、チェックする通常のフォルダを超えてサブフォルダに再帰しません。私の場合は、CMAKE_PREFIX_PATHをC:\ Program Files \ glewに編集しました。これは必要でした。しかしこれはCMakeがCMAKE_PREFIX_PATHと.libファイルと.hファイルのために 'lib'と 'include'という名前のサブフォルダをそれぞれチェックすることを許可するだけです。必要なglew32s.libファイルは、C:¥Program Files¥glew¥lib¥Release¥x64¥glew32s.libに埋め込まれています。 libフォルダにある.libファイルのコピーを作成した後、パッケージが見つかりました。 –

+0

ちょっともう一言:私はソースからglewを構築するためにCMakeを使っていましたが、より簡単に見つけられるように、結果のパッケージをどのように配置するかは分かっています。私の問題は、sourceforgeによって設定されたフォルダ構造や、ダウンロードしたzipファイルをまとめて、glewのプリコンパイルされたバージョンを得るためのものであると考えられます。 –

関連する問題