2017-02-04 9 views
1

ここでC++ newbieは、CLion(Win 10)用のSFMLライブラリを実装しようとしています。cmake用のsfmlライブラリがありません

私はこのhttp://www.sfml-dev.org/tutorials/2.0/compile-with-cmake.phpのガイドラインに従い、cmake guiとmingwを使ってsfmlをインストールしました。

は、今私はCMakeLists.txt

cmake_minimum_required(VERSION 3.6) 
project(untitled2) 
set(CMAKE_CXX_STANDARD 11) 

set(SOURCE_FILES main.cpp) 
add_executable(untitled2 ${SOURCE_FILES}) 

set(CMAKE_MODULE_PATH "C:/Program Files (x86)/SFML/cmake/Modules"${CMAKE_MODULE_PATH}) 

set(SFML_STATIC_LIBRARIES TRUE) 
find_package(SFML COMPONENTS graphics window system REQUIRED) 
include_directories(${SFML_INCLUDE_DIR}) 
target_link_libraries(First ${SFML_Libraries}) 

Howewerに突出するSMFライブラリを含めるようにしようとすると、私はエラー

CMake Error at C:/Program Files (x86)/SFML/cmake/Modules/FindSFML.cmake:355 (message): 
    SFML found but some of its dependencies are missing (FreeType libjpeg) 
Call Stack (most recent call first): 
CMakeLists.txt:13 (find_package) 

を取得しています。しかし、私はそれらのLIBSは、Windowsに含まれていると思いました。私は何か間違っている?私がFreeTypeとlibjpegファイルをどこにダウンロードすればいいですか?

答えて

0

CMakeLists.txtには、ローカルシステム固有のもの(パスなど)を設定しないでください。これはビルドシステムの全目的を破ります。

まず、あなたのプロジェクトにサブディレクトリ "cmake"を作成し、そこにSFMLのFindSFML.cmakeモジュールをコピーすることをお勧めします。

次に、あなたのCMAKE_MODULE_PATHに応じて更新します。

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) 

これは、モジュールが検出されたことを確認します。 CMakeのデフォルトモジュールは常に見つかるので、変数の前の値を保持する必要はありません(通常は空でなければなりません)。

次に、実際のプロジェクトファイルを作成するときに、あなただけの、たとえば、CMakeのにSFML_ROOTを渡す必要があります:

cmake "-DSFML_ROOT=C:/Program Files (x86)/SFML" path/to/source 

同様に、あなたがない限り、あなたのCMakeLists.txtSFML_STATIC_LIBRARIESを設定しないでください何とか静的ライブラリを使用するように強制されました。だから私は実際にも、コマンドラインにそれを追加したい:

cmake "-DSFML_ROOT=C:/Program Files (x86)/SFML" -DSFML_STATIC_LIBRARIES=TRUE path/to/source 

あなたは一度だけこれらを設定する必要があり、それらは後でCMakeCache.txtファイルに保存されています。

最後に少なくともではない、あなたはSFMLと静的リンクをサポートしたい場合、あなたにもSFMLの依存関係をリンクする必要があります:すべてのこれらのエラーを修正しないこと

target_link_libraries(First ${SFML_LIBRARIES} ${SFML_DEPENDENCIES}) 

注意あなたが得ているメッセージ。何らかの理由で、SFMLの事前構築された依存関係はC:\Program Files (x86)\SFML\libにありません。あらかじめ用意された正しいパッケージをお持ちですか?

関連する問題