2016-12-25 18 views
-1

私はUbuntu 16.04 x86_64でGLFW3ライブラリを使用するプログラムをコンパイルしようとしています。私はlibglfw3パッケージとlibglfw3-devパッケージをインストールしました。GLFW関数が見つかりません

cmake_minimum_required (VERSION 2.6) 
project (Test) 
set (CMAKE_CXX_FLAGS "-lGL -lGLEW") 
set (CMAKE_EXE_LINKER_FLAGS -lglfw) 
add_executable(Test src/main.cpp) 

そしてmain.cppに:次に、私はCMakeLists.txt書い

#include <stdio.h> 
#include <stdlib.h> 
#include <GL/glew.h> 
#include <GLFW/glfw3.h> 

int main() { 

    if (!glfwInit()) { 
     return -1; 
    } 

    glfwTerminate(); 

    return 0; 
} 

をしかし、私はmakeコマンドからのエラーを取得:

main.cpp:(.text+0x5): undefined reference to `glfwInit' 
main.cpp:(.text+0x1a): undefined reference to `glfwTerminate' 
collect2: error: ld returned 1 exit status 
CMakeFiles/Test.dir/build.make:94: recipe for target 'Test' failed 
make[2]: *** [Test] Error 1 
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/Test.dir/all' failed 
make[1]: *** [CMakeFiles/Test.dir/all] Error 2 
Makefile:83: recipe for target 'all' failed 
make: *** [all] Error 2 

は私が間違って何をしているのですか? GLFW3が見つからないのはなぜですか? CMakeのでライブラリとのリンクのための

+1

GLEWライブラリにリンクしましたか? – Zebrafish

+0

私はこの文字列 'set(CMAKE_EXE_LINKER_FLAGS -lglfw)'がこのライブラリをリンクしなければならないと考えました。そうではありませんか?ちょうど私はCMakeを学ぶだけです。私はWindows上でVisual Studioプロジェクトシステムとそのコンパイラを使用しました。 –

+0

UbuntuでGLFWライブラリをコンパイルしましたが、Windows Visual Studioでプログラムを実行しようとしていますか? – Zebrafish

答えて

1

ネイティブな方法はtarget_link_librariesです:

cmake_minimum_required (VERSION 2.6) 
project (Test) 
add_executable(Test src/main.cpp) 
target_link_libraries(Test GL GLEW glfw) 

注意、GLおよびその他のLIBSは、コンパイラとリンカに知られているデフォルトの場所にインストールされている場合にのみ、これは動作すること。それ以外の場合は、@ tambreのように、find_package(GLEW)と他のfind_package()コールを使用する方がよいでしょう。

+0

ありがとう!私はこの解決策を試してみます。 –

関連する問題