2016-04-01 16 views
0

私は過去数日間、私のプロジェクトにBoostライブラリを入れるのに苦労しました。私は読んでいて、スタックオーバーフローに関する数多くのポスターの提案を使用しています。何らかの理由で私は理解できません。私はまだBoostを見つけるためにCMakeを手に入れることができません。あるいは、Boostを見つけたら、コンパイルできません。システムconfig()が見つからないというエラーを取り除くために私が明らかに必要とするboost_systemライブラリを見つけてください。CLionとBoost 1.60.0

私は現在、GNU C++コンパイラv4.9.3-1

ブーストが現在ここに私のシステムで抽出されたのMinGWの実装を使用してWindows 10に取り組んでいます:

C:\boost_1_60_0 

これは何を私CMakeのです私は現在取得しています

cmake_minimum_required(VERSION 3.5) 
project(Engine) 

#SET(GCC_COVERAGE_LINK_FLAGS "-lboost_system") 

message(STATUS "start running cmake...") 

SET(BOOSTROOT "C:/boost_1_60_0/") 
SET(BOOST_ROOT "C:/boost_1_60_0/") 
SET(BOOST_LIBRARYDIR "C:/boost_1_60_0/libs/") 

find_package(Boost 1.60.0 COMPONENTS system REQUIRED) 

if(Boost_FOUND) 

    message(STATUS "Boost_INCLUDE_DIRS: ${Boost_INCLUDE_DIRS}") 
    message(STATUS "Boost_LIBRARIES: ${Boost_LIBRARIES}") 
    message(STATUS "Boost_VERSION: ${Boost_VERSION}") 

    include_directories(${Boost_INCLUDE_DIRS}) 
    add_definitions("-DHAS_BOOST") 

endif() 

add_executable(Engine main.cpp) 

if(Boost_FOUND) 

    target_link_libraries(Engine ${Boost_LIBRARIES}) 

endif() 

set(SOURCE_FILES main.cpp) 

エラーです:

ファイルには、現在のようになります。
Error:Unable to find the requested Boost libraries. 
Boost version: 1.60.0 
Boost include path: C:/boost_1_60_0 
Could not find the following Boost libraries: 
     boost_system 
No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT to the location of Boost. 

** UPDATE ** -DBoost_Debug =とcmakeのを実行しているとき、これが出力されますON:事前

_boost_TEST_VERSIONS = 1.61.0;1.61;1.60.0;1.60 
Boost_USE_MULTITHREADED = TRUE 
Boost_USE_STATIC_LIBS = 
Boost_USE_STATIC_RUNTIME = 
Boost_ADDITIONAL_VERSIONS = 
Boost_NO_SYSTEM_PATHS = 
Declared as CMake or Environmental Variables: 
BOOST_ROOT = C:/boost_1_60_0/ 
BOOST_INCLUDEDIR = 
BOOST_LIBRARYDIR = C:/boost_1_60_0/libs/ 
_boost_TEST_VERSIONS = 1.61.0;1.61;1.60.0;1.60 
location of version.hpp: C:/boost_1_60_0/boost/version.hpp 
version.hpp reveals boost 1.60.0 
guessed _boost_COMPILER = -mgw49 
_boost_MULTITHREADED = -mt 
_boost_RELEASE_ABI_TAG = - 
_boost_DEBUG_ABI_TAG = -d 
_boost_LIBRARY_SEARCH_DIRS_RELEASE = C:/boost_1_60_0/libs/;C:/boost_1_60_0//lib;C:/boost_1_60_0//stage/lib;C:/boost_1_60_0/lib;C:/boost_1_60_0/../lib;C:/boost_1_60_0/stage/lib;PATHS;C:/boost/lib;C:/boost;/sw/local/lib_boost_LIBRARY_SEARCH_DIRS_DEBUG = C:/boost_1_60_0/libs/;C:/boost_1_60_0//lib;C:/boost_1_60_0//stage/lib;C:/boost_1_60_0/lib;C:/boost_1_60_0/../lib;C:/boost_1_60_0/stage/lib;PATHS;C:/boost/lib;C:/boost;/sw/local/lib 
Searching for SYSTEM_LIBRARY_RELEASE: boost_system-mgw49-mt-1_60;boost_system-mgw49-mt;boost_system-mt-1_60;boost_system-mt;boost_system 
Searching for SYSTEM_LIBRARY_DEBUG: boost_system-mgw49-mt-d-1_60;boost_system-mgw49-mt-d;boost_system-mt-d-1_60;boost_system-mt-d;boost_system-mt;boost_system 

おかげ

+1

診断のお手伝いをします - DBoost_DEBUG = ON?また、多分あなたはここで答えを見つけるでしょう:http://stackoverflow.com/questions/13280823/cmake-not-finding-boost –

+0

-DBoost_DEBUG = ONで設定する場所や実行方法がわかりません。私はそれを理解しました – Richard

+1

C:/ boost_1_60_0 /で "libboost_system"で始まり、_boost_LIBRARY_SEARCH_DIRS_RELEASEまたは_boost_LIBRARY_SEARCH_DIRS_DEBUGにあることを確認するファイルを探してみてください。 –

答えて

1

ライブラリを見つけるためにFindBoostを助けるためにいくつかの有用なフラグがあります。

これらの変数(オンまたはオフ - それはあなたのブーストのインストールによって異なります)を設定してみてくださいset(Boost_DETAILED_FAILURE_MSG TRUE)でフラグを設定find_package(Boost)

set(Boost_LIB_PREFIX   "lib"  CACHE STRING "") 
set(Boost_USE_MULTITHREADED  ON   CACHE BOOL "") # '-mt' flag 
set(Boost_USE_STATIC_LIBS  ON   CACHE BOOL "") 
set(Boost_USE_STATIC_RUNTIME ON   CACHE BOOL "") # '-s' tag 
set(Boost_USE_DEBUG_RUNTIME  ON   CACHE BOOL "") # '-g' tag 
set(Boost_COMPILER    "-mgw49" CACHE STRING "") 

を呼び出す前には、大幅にするTryで再実行し

+0

これでBoost_DIR - Boost_DIR-NOTFOUNDと表示されました。このSET(BOOST_DIR "C:/ boost_1_60_0 /")のように設定しようとしました。それでも見つからなかった。また、Boost_SYSTEM_LIBRARY_DEBUGまたはBoost_SYSTEM_LIBRARY_RELEASEを見つけることができません。 – Richard

+0

さらに重要なことが1つあります。あなたはmingwとあなたのブーストをコンパイルしましたか?私はあなたのライブラリのパスに 'msvc-14.0'があることに気付きました。たとえcmakeがライブラリを見つけても、mingwはリンクステージに失敗します。 プロジェクトのcmakeキャッシュをチェックしました.Boost_DIR-NOTFOUNDもありますが、インクルードディレクトリとすべてのライブラリが正しく見つかりました。 –

+0

私はコンパイルに関して本当に大きな間違いを犯したことに気付きました。私は今MinGWコンパイラですべてを再コンパイルしました。私は前にlibsをビルドする必要がなかったし、私はちょうどbatファイルを実行し、私はMinGWとMSVCを私のシステムにインストールしているので、msvC++コンパイラを使用しました...あなたの時間を無駄にして謝罪します。 – Richard

関連する問題