2013-10-20 32 views
16

こんにちは私はcmgを使用してリンクGlfwと他のライブラリに問題があります。コマンドラインから は、私はこのCmake link library target link error

g++ main.cpp -lGL -lGLU -lGLEW -lglfw 

のようにコンパイルしかし、私はコンパイルするためにcmakeを使用していました。私はtarget_linkg_librariesを使用しようとしましたが、この農産物エラー

CMakeLists.txtでCMakeのエラー:18(target_link_libraries): この
プロジェクトによって構築されていないターゲット「GL」のためのリンクライブラリを指定することはできません。

私はこれを追加定義を使用して試しました。私はエラーは表示されませんが、これはライブラリをリンクしていません。

もOpenGLとにより提供されるいくつかの有用な変数があります(target_link_librariesは、このオプションが追加されます)

target_link_libraries(your_executable_name libraries_list) 

そして、あなたはadd_definitionステートメントを追加する必要はありません。

cmake_minimum_required (VERSION 2.6) 
project (test) 

find_package(OpenGL REQUIRED) 
find_package(GLEW REQUIRED) 

ADD_DEFINITIONS(
    -lGL 
    -lGLU 
    -lGLEW 
    -lglfw 
) 

add_executable(test.out 
    main.cpp 
) 

target_link_libraries(GL GLU GLEW glfw) 
+0

'ADD_DEFINITIONS'がある:よう

あなたのCMakeLists.txtはする必要があります。 –

+0

未知のコマンドadd_libraries – Luffy

+0

申し訳ありませんが、箱からそれを持っていませんでした。これはかなり単純な[Google検索](http://bit.ly/1a3XwG7)です。 –

答えて

33

target_link_librariesの構文は次のとおりです。 GLEWパッケージ。余分なライブラリのために、() ``そしてadd_librariesをしようとしない定義するため

cmake_minimum_required (VERSION 2.6) 
project (test) 

find_package(OpenGL REQUIRED) 
find_package(GLEW REQUIRED) 

include_directories(${OPENGL_INCLUDE_DIR} ${GLEW_INCLUDE_DIRS}) 

add_executable(test 
    main.cpp 
) 

target_link_libraries(test ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES}) 
+0

thxこれを解決するには年を取るだろう。 – Luffy

+10

重要な詳細は、 'target_link_libraries' **を' ** add_executable' **と** 'find_package'の後ろに置くことです。その結果、リンクされたすべてのコンポーネントが分かります。 – Murphy