2017-06-02 19 views
1

Freeglut-3.0.0はcmake(MinGW makefile)とmingwでビルドされ、mingw32-make installC:/Program Files (x86)/freeglutで正常にインストールされました。CMakeがfreeglut-3.0.0を見つけられません

マイCMakeLists.txtは次のとおりです。

cmake_minimum_required(VERSION 3.7) 

    project(math_tests) 

    set(TESTS_SOURCES tests.cpp gl_core_3_3.c) 
    set(CMAKE_CXX_STANDARD 11) 

    # GLUT 
    find_package(GLUT REQUIRED) 
    include_directories(${GLUT_INCLUDE_DIR}) 
    if(NOT GLUT_FOUND) 
     message(ERROR "GLUT not found!") 
    endif(NOT GLUT_FOUND) 

    # OpenGL 
    find_package(OpenGL REQUIRED) 
    include_directories(${OpenGL_INCLUDE_DIRS}) 
    link_directories(${OpenGL_LIBRARY_DIRS}) 
    add_definitions(${OpenGL_DEFINITIONS}) 
    if(NOT OPENGL_FOUND) 
     message(ERROR "OPENGL not found!") 
    endif(NOT OPENGL_FOUND) 

    add_executable(tests ${TESTS_SOURCES}) 
    target_link_libraries(tests math ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES}) 

今CMakeのは、エラーを出力します:Could NOT find GLUT (missing: GLUT_glut_LIBRARY).

私は私が間違っているのかを把握することはできません。

答えて

2

あなたのCMakeLists.txtファイル文が

find_package(GLUT REQUIRED) 

はFindGLUT.cmake

find_library(GLUT_glut_LIBRARY NAMES glut glut32 freeglut 
    PATHS 
    ${OPENGL_LIBRARY_DIR} 
    ${GLUT_ROOT_PATH}/Release 
    ) 

find_libraryから、このコードを実行しようとしているので、あなたのシナリオでglut glut32 freeglutライブラリのいずれかを見つけることができません彼らがどこにいるかについては何も知らない(実際はC:/Program Files (x86)/freeglutの下に)。

あなたはそれがfreeglut.dllファイルを含むものである、右のディレクトリに$(OPENGL_LIBRARY_DIR)を設定することができ、あなたの場合には、例えば:

set(OPENGL_LIBRARY_DIR "C:/Program Files (x86)/freeglut/lib") 

ファイルがC」である場合:/プログラムファイル(x86)/ freeglut/lib "ディレクトリにあります。

+0

ありがとうございます!それはうまくいった。しかし、ユーザがこのパスをどのように指定するかは(GLUTが見つからない場合は、FindGLUTがOPENG_LIBRARY_DIRの代わりに変数を必要とするため)また、私もLinux用に構築しています.CmakeLists.txtは両方のプラットフォームで動作するはずです。現在、OPENGL_LIBRARY_DIRは 'if(WIN32)'ステートメントに設定されています。 – slavust

+0

マルチプラットフォームのためには、[CMAKE_PREFIX_PATH](https://cmake.org/cmake/help/v3.4/variable/CMAKE_PREFIX_PATH.html#variable:CMAKE_PREFIX_PATH)を '' '" lib /あなたの特定のシナリオで '' c:/ program files(x86)/ freeglut "'のように "freeglutlibrary>" '' 'あなたのcmakeに特定の 'SET 'を避けるのが最善ですが、エンドユーザは設定時に' -DCMAKE_PREFIX_PATH = 'という正しい接頭辞を設定してください。おそらく、OPTIONSを使ってenduserにfreeglutへの特定のパスを設定させることは賢明です(そして、そのオプションの値はあなたのスクリプトによって 'CMAKE_PREFIX_PATH'に追加されます) –

+0

Linuxのために何も設定する必要はありませんフリーグルットライブラリ、それはちょうど追加設定なしで動作するはずです –

関連する問題