GLEWをCMakeを使用してプロジェクトにリンクするにはどうすればよいですか?
CMakeを使用してGLEWを少なくとも3時間プロジェクトにリンクしようとして成功していませんでした。
CMake 3.1.0に付属のFindGLEW.cmakeを使用しています
CMakeLists.txt
_find_package(GLEW REQUIRED)
if (GLEW_FOUND)
include_directories($(GLEW_INCLUDE_DIRS))
endif()
_
環境変数
MinGW w64を使用してソースをコンパイルし、インクルードとlibsをそれぞれのフォルダーにコピーするだけでGLFWとGLMを正常にリンクしましたが、GLEWで同じことを行った後、CMakeはまだ見つかりませんでしたそれ。
質問の作成中に十分な説明ができなかった場合は申し訳ありません。必要な追加情報を提供します。
編集:CMakeキャッシュファイルで場所を指定することでヘッダーファイルをリンクすることができましたが、glewInit()
などのグロー関数への未定義の参照を取得しています。
FindGLEWなどの典型的なCMakeスクリプトは、プロジェクトに必要なパスとファイルを指定する変数を定義します。スクリプトが正しいパスを自動的に識別できない場合(通常は標準ではないインストール場所が原因です)、これらの変数は入力する必要があります。
コマンドラインCMakeでは、-Dフラグを使用して、特定の変数の値を定義および設定します。 CMake-guiやIDE統合などの他のCMakeインターフェースは、この機能を他の方法で提供します。
ただし、キャッシュを直接変更して(CMakeCache.txt)、そこでCMakeが使用しているものを確認するか、キャッシュを完全にクリアすることもできます。変更を有効にするには、CMakeを再実行する必要があります。
リンクに関しては、リンクするライブラリをCMakeに伝える必要があります。使用 link_libraries
コマンドは、自動化スクリプトが提供するものを使用します。
find_package(GLEW REQUIRED)
if (GLEW_FOUND)
include_directories(${GLEW_INCLUDE_DIRS})
link_libraries(${GLEW_LIBRARIES})
endif()
find_package(GLEW)
の秘密は、CmakeをインストールしたFindGLEW.cmakeファイルにあります。
find_path(GLEW_INCLUDE_DIR GL/glew.h)
find_library(GLEW_LIBRARY NAMES GLEW glew32 glew glew32s PATH_SUFFIXES lib64)
find_path
およびfind_library
コマンドは、標準のシステムパスでパスを検索します。ユーザー定義のディレクトリでパスを検索する場合は、それらを指定する必要があります。例えば:
set(CMAKE_PREFIX_PATH "d:/libs/glew-1.10.0")
set(CMAKE_LIBRARY_PATH "d:/libs/glew-1.10.0/lib/Release/Win32/")
find_package(GLEW REQUIRED)
参照:
他の回答も明らかに機能しますが、ターゲットベースのスタイルのcmakeは、GLEWの検索モジュールがインポートされたターゲットGLEW::GLEW
を定義するため、さらに簡単になります。あなたに必要なのは:
find_package(GLEW REQUIRED)
target_link_libraries(YourTarget GLEW::GLEW)
YourTarget
は、add_executable
またはadd_library
で作成したターゲットです。インクルードディレクトリを明示的に追加する必要はありません。ターゲットをリンクすることで自動的に追加されます。
私は、Macのコマンドラインからグローをcmakeにリンクするのに苦労していました。これは役立つかもしれませんが、よくわかりません:)私がやったことをステップバイステップで説明します。
web からCmakeソースをインストールしました。
次に、ターミナルのcmakeフォルダー内に移動して入力しました
./bootstrap && make && make install
(これにより、OSプラットフォームにcmakeコマンドラインツールがインストールされます)
いくつかの演習ファイルがあります。これらすべてのエクササイズファイル(たとえば、triangles.cpp、shader.cppなど)のためにcmakeでxcodeファイルを生成したいので、エクササイズファイルフォルダー内にディレクトリを作成しました。
$ mkdir xcode
$ cd xcode
$ cmake -G "Xcode" ..
この時点で、Cmakeは正しいライブラリを含むすべてのxcodeファイルをインストールすることを想定しています。しかし、エラーがありました:
$ cmake -G "Xcode" ..
CMake Warning (dev) at CMakeLists.txt:3 (cmake_minimum_required):
Compatibility with CMake < 2.4 is not supported by CMake >= 3.0.
This warning is for project developers. Use -Wno-dev to suppress it.
system name is: Darwin-14.1.0
system processor is: x86_64
-- Could NOT find GLEW (missing: GLEW_INCLUDE_DIR GLEW_LIBRARY)
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- Using Cocoa for window creation
-- Using NSGL for context creation
-- Building GLFW only for the native architecture
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
GLEW_LIBRARY
linked by target "TextureLoader" in directory /Users/Mydir/Desktop/Exercise/Exercise Files
-- Configuring incomplete, errors occurred!
次に、GLEWとそのすべてのライブラリを正しくインストールしたことを確認するために、実行しました
$brew install glew
はい、既にGlewをインストールしていますが、リンクされていません。以下の警告を参照してください。
Warning: glew-1.12.0 already installed, it's just not linked
次に、次のコマンドを実行しました。
$ brew unlink glew
$ brew link glew
そして、私はエラーを解決しました。したがって、リンクグリューを確認してください。お役に立てれば。
ハッピーコーディング:)