2016-10-18 6 views
0

私は今、CLionの簡単なC++プロジェクトでGLFWライブラリをリンクするのに苦労しました。私は既存の問題とその解決策を見てきましたが、私の場合は助けにならないようです。マイCMakeListsファイルは、次のとおりです。CMake、GLFW3 OSXのリンクエラー

cmake_minimum_required(VERSION 3.6) 
project(TestGame) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -v") 

find_library(carbon_lib Carbon) 
find_library(cocoa_lib Cocoa) 
find_library(iokit_lib IOKit) 
find_library(corevideo_lib CoreVideo) 
find_library(opengl_lib OpenGL) 
find_library(corefoundation_lib CoreFoundation) 

set(frameworks 
    ${carbon_lib} 
    ${cocoa_lib} 
    ${iokit_lib} 
    ${corevideo_lib} 
    ${opengl_lib} 
    ${corefoundation_lib} 
    ) 

file(GLOB sources 
    "include/*.hpp" 
    "src/*.cpp" 
    "src/application/*.cpp" 
    "src/controlling/*.cpp" 
    "src/helper/*.cpp" 
    "src/render/*.cpp" 
    "src/texturing/*.cpp" 
    "src/translations/*.cpp" 
    "test/*.cpp" 
    ) 

find_package(GLEW REQUIRED) 
find_package(GLFW3 REQUIRED) 
find_package(SDL2 REQUIRED) 
find_package(GLM REQUIRED) 
find_package(SOIL REQUIRED) 

include_directories(${GLEW_INCLUDE_DIRS} ${GLFW_INCLUDE_DIR}  ${GLM_INCLUDE_DIR} ${SDL2_INCLUDE_DIR} ${SOIL_INCLUDE_DIRS} ${GLM_INCLUDE_DIRS}) 

add_executable(GameMain ${sources}) 
target_link_libraries(GameMain ${GLEW_LIBRARIES} ${GLFW_LIBRARIES} ${GLM_LIBRARIES} ${SDL2_LIBRARY} ${SOIL_LIBRARIES} ${frameworks}) 

私が持っているGLFW3とGLFW2(明らかにココアで必要とされると、なぜ私は見当がつかないたV2)醸造(醸造がglfw2インストールまたは醸造glfw3をインストールし使用してインストール - と - build-bottle - 静的な内部cmakeエラーのために動作しません)、手動でコンパイルしたGLFWを最新のソースから試しました。

私は最近、C++/CMake/Clionに関することを学び始めたので、ここで重要なことを忘れるかもしれないので気をつけてください - 追加情報を求めることをためらうことを躊躇しないでください。

また、Sierra OSX(現在最新のBETAを実行中)アップデートの前に、私のアプリケーションがリンカエラーなしでかなりうまく動いていたことに気付く価値があります。リンカのエラーは次のとおりです。

Undefined symbols for architecture x86_64: 
    "_glfwCreateWindow", referenced from: 
     Application::Application(char const*, int, int) in  Application.cpp.o 
    "_glfwMakeContextCurrent", referenced from: 
     Application::Application(char const*, int, int) in  Application.cpp.o 
    "_glfwWindowHint", referenced from: 
     Application::Application(char const*, int, int) in Application.cpp.o 
    "_glfwWindowShouldClose", referenced from: 
     Application::run() in Application.cpp.o 

これらは、ウィンドウが作成されるメインエントリファイルに関連しています。 CLionは、ディレクトリを含む間に何も省略されることについて何も提案しません。私はこれらのフレームワークをすべて試してみましたが、GLFW3を動作させるためにCocoa/IOKit/CoreVideo/OpenGLが含まれるソリューションを見つけました。 Carbon/CoreFoundationも含まれていますが、これはいくつかの解決策があるためです。

文字通り何も機能しません。

+0

作るVERBOSE = 1の出力は何ですか? – xaxxon

+0

をランダムに除いて、os xグラフィックスツールをダウンロードしてください:https://developer.apple.com/download/more/?=graphics彼らはOpenGLの問題をデバッグするのに非常に役立ちます。 – xaxxon

+0

'FindGLFW3.cmake'スクリプトを設定する変数を確認してください。例えば。 [this one](https://github.com/OpenKinect/libfreenect2/blob/master/cmake_modules/FindGLFW3.cmake)は、プレフィックスが 'GLFW3_'の変数を設定します。 (しかし、 'GLFW_'を接頭辞とするものを使用します)。 – Tsyvarev

答えて

0

http://www.glfw.org/docs/latest/build_guide.html#build_link_cmake_package

あなたは追加する必要があります。

target_link_libraries(LearnGLSL ..any other libraries... glfw) 
+0

私はさまざまな組み合わせを試してきましたが、このガイドもまったく成功しませんでした。 –

+0

最初に行うべきことは、機能する手作りのコマンドを考え出すことです。まず、make VERBOSE = 1を実行してcmakeに実際に何をしているかを出力させ、それをコピーして手作業で作業するまで調整を開始することから始めることができます。 – xaxxon

関連する問題