2016-08-06 33 views
-1

私は一般的にCMakeとC++の新機能を使用していますので、SFMLのような外部ライブラリをJetbrainのIDE CLionのプロジェクトにインポートしようとしました。SFMLヘッダーファイルをCLionプロジェクトに含めることができません

一般的にCMakeについて学び、特にCMakeとCMakeを連携させて1日を過ごした後、私は最終的にプロジェクトのCMakeを管理してSFMLライブラリファイルを見つけました。
しかし、SFMLヘッダーを含めるために私自身のヘッダーファイルに近づいたとき、ライブラリからヘッダーが見つからないため、問題が発生しました。これは#includeディレクティブを意味します。
私は初心者なので、ここではかなり失われています。それは私がWindows上で働いていると私は唯一のSFMLのオーディオモジュールを探していることは注目に値する

# Set CMake's minimum required version 
cmake_minimum_required(VERSION 3.5) 

set(CMAKE_VERBOSE_MAKEFILE on) 

#Set CMake's project name 
project(testproj) 

include_directories("${PROJECT_BINARY_DIR}") 

#Set CMake's flags 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

#Set source files 
set(SOURCE_FILES Animal.cpp Animal.hpp ConstantValues.hpp Enums.hpp Mamal.hpp Mammals/Lion.cpp Mammals/Lion.hpp) 
add_library(testproj SHARED ${SOURCE_FILES}) 

#Set CMake's module path to find the SFML Lib 
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/Modules/" ${CMAKE_MODULE_PATH}) 
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "C:\\SFML\\SFML-2.3.2") 

#Find the SFML lib 
find_package(SFML 2 REQUIRED audio) 
if (SFML_FOUND) 
    include_directories(${SFML_INCLUDE_DIR}) 
    target_link_libraries(testproj ${SFML_LIBRARIES}) 
endif (SFML_FOUND) 

は、ここに私のCMakeLists.txtファイルです。
私は何が欠けていますか?

+0

「ライブラリからヘッダーが見つからないため、問題が発生しました。」 - これはどういう意味ですか? 'find_package'は失敗しますか?あるいは '#include'指示文が失敗しますか?後者の場合、正確なエラーメッセージは何ですか? – Tsyvarev

+0

@Tsyvarev投稿を編集しました。私は#include指令を意味していました。このようなファイルやディレクトリがないという特別なエラーメッセージは表示されません。 –

+0

**正確なエラーメッセージ**をご覧ください。 'find_package(SFML)'はエラーを返さないので正しく動作します。したがって、SFMLのインストールが壊れているか、不正な '#include'ディレクティブを使用しています。 – Tsyvarev

答えて

1

OK @ Tsyvarevさんの助けを借りて、この問題を解決しました。 問題が#includeディレクティブのみに関連し、CMakeスクリプトではないことに気付いたとき、私は少し深く見て、SFMLの公式ドキュメントとは対照的に、各モジュールのヘッダーファイルは一致するディレクトリ

だから、オーディオモジュールからのヘッダファイルをインクルードするために、たとえば、私はこれを行う必要があります。ここに

#include <SFML/Audio/sound.hpp> 

キーを使用すると、ブーストで行うのと同じように、最初のSFMLフォルダに見ることです。

関連する問題