私はCMakeとOpenGLでまったく新しいです。CMake 3.0.2でビルドされた Ubuntu 15.04 64 ビット PC 上のプロジェクトでOpenGLをライブラリとして使用する必要があります。
私はこれに数日間取り組んできましたが、ほとんどイライラしています。いろいろな問題で混乱します。
メサと OpenGL
まず、mesaパッケージを commandでインストールすると、 mesa 10.5.2sudo apt-get install mesa-common-dev
が取得されます。
次に、次のコマンドでパッケージ ファイルを参照しますdpkg -L mesa-common-dev
。
/.
/usr
/usr/share
/usr/share/bug
...
/usr/share/bug/mesa-common-dev/control
/usr/share/doc
...
/usr/share/doc/mesa-common-dev/faq.html
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/pkgconfig
/usr/lib/x86_64-linux-gnu/pkgconfig/dri.pc
/usr/include
/usr/include/GL
/usr/include/GL/gl.h
...
/usr/include/GL/glx_mangle.h
質問 1 : 共有ライブラリ (.so) と静的ライブラリ (.a) はどこにありますか?
CMake
私は今CMakeLists.txt
、OpenGL モジュールという名前の を持っていますOPENGL
...
find_package(OPENGL REQUIRED) # here is CMakeLists.txt:45
...
include_directories(${OPENGL_INCLUDE_DIRS})
link_directories(${OPENGL_LIBRARY_DIRS})
target_link_libraries(MyProj ... ${OPENGL_LIBRARIES})
...
だから私は間違いなくこのようなcmakeファイルを持っている必要があります(テンプレートとしてのcmakeファイルをFindOPENGL.cmake
取りました):GLEW
# OPENGL_FOUND If OPENGL is found
# OPENGL_LIBRARIES OPENGL libraries
# OPENGL_INCLUDE_DIRS OPENGL include directories
# OPENGL_LIBRARY_DIRS OPENGL library directories
if(UNIX)
set(OPENGL_INC_NAMES gl.h)
set(OPENGL_LIB_NAMES libGL.so.1.2.0)
endif(UNIX)
# OPENGL static library # line 17
find_library(OPENGL_LIBRARIES
NAMES ${OPENGL_LIB_NAMES}
PATHS /usr/x86_64-linux-gnu/mesa
DOC "OPENGL library")
# OPENGL library dir # line 23
find_path(OPENGL_LIBRARY_DIRS
NAMES ${OPENGL_LIB_NAMES}
PATHS /usr/x86_64-linux-gnu/mesa
DOC "OPENGL include directories")
# OPENGL include dir # line 29
find_path(OPENGL_INCLUDE_DIRS
NAMES ${OPENGL_INC_NAMES}
PATHS /usr/include/GL
DOC "OPENGL include directories")
# Version
set(OPENGL_VERSION 1.13.0)
# Set package standard args
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OPENGL # here is FindOPENGL.cmake:40
REQUIRED_VARS OPENGL_LIBRARIES OPENGL_INCLUDE_DIRS OPENGL_LIBRARY_DIRS
VERSION_VAR OPENGL_VERSION)
質問 2 : cmake ファイルで静的ライブラリと共有ライブラリをリンクする方法と、17/23/29 行の違いは何ですか?
次に、cmake を実行すると、次のエラーが発生します。
CMake Error at /usr/share/cmake-3.0/Modules/FindPackageHandleStandardArgs.cmake:136 (message):
Cound NOT find OPENGL (missing: OPENGL_LIBRARIES OPENGL_LIBRARY_DIRS)
(found version "1.13.0")
Call Stack (most recent call first):
/usr/share/cmake-3.0/Modules/FindPackageHandleStandardArgs.cmake:343 (_FPHSA_FAILURE_MESSAGE)
cmake/modules/FindOPENGL.cmake:40 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:45 (find_package)
質問 3 : このエラーが表示されるのはなぜですか?どうすれば修正できますか? 手順全体で何か間違ったことをしましたか?
アップデート
@ usr1234567 の回答に感謝します。その後、削除して/usr/share/cmake-3.0/Modules/FindOpenGL.cmakeFindOPENGL.cmake
を利用しようとします。それでもエラーが発生します。の定義についてこの cmake ファイルを調べ、その中の lib パスを手動で確認しましたが、残念ながらリストされているパスは存在しません。missing: OPENGL_gl_LIBRARY
OPENGL_gl_LIBRARY
mesaを正しくインストールしましたか?