2016-04-01 4 views
0

In den letzten paar Tagen habe ich mich bemüht, die Boost-Bibliotheken in mein Projekt aufzunehmen. Ich lese und benutze Vorschläge von zahlreichen Postern auf Stack Overflow und aus irgendeinem Grund, die ich nicht verstehe, kann ich CMake immer noch nicht finden Boost zu finden, oder wenn Boost findet, kann ich nicht kompilieren, weil es nicht kann finde die boost_system library, mit der ich offensichtlich verlinken muss, um den system config() not found error zu entfernen.CLion und Boost 1.60.0

ich zur Zeit auf Windows arbeite 10 mit dem MinGW Umsetzung der GNU C++ Compiler v4.9.3-1

Boost zur Zeit auf meinem System hier extrahiert:

C:\boost_1_60_0 

Dies ist, was mein CMake Datei sieht derzeit wie:

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) 

Die Fehler, die ich zur Zeit bin immer ist:

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 ** Dies ist der Ausgang, wenn cmake mit -DBoost_Debug = ON ausgeführt wird:

_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 

Vielen Dank im Voraus

+1

Versuchen Wieder läuft in der Diagnostik helfen - DBoost_DEBUG = EIN? Vielleicht finden Sie auch hier eine Antwort: http://stackoverflow.com/questions/13280823/cmake-not-finding-boost –

+0

Ich bin mir nicht sicher, wo ich einstellen oder wie ich es mit -DBoost_DEBUG = ON ausführen soll. Nevermind Ich fand es heraus, Update über – Richard

+1

Versuchen Sie, nach Datei zu suchen, die mit "libboost_system" in C:/boost_1_60_0/beginnt, und zu überprüfen, dass es sich in _boost_LIBRARY_SEARCH_DIRS_RELEASE oder _boost_LIBRARY_SEARCH_DIRS_DEBUG befindet? –

Antwort

1

Es gibt einige nützliche Fahnen FindBoost zu helfen Bibliotheken zu finden.

Versuchen Sie diese Variablen Einstellung (ein- oder ausschalten - auf den Boost-Installation hängt), bevor 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 "") 

Einstellen einer Flagge mit set(Boost_DETAILED_FAILURE_MSG TRUE) Aufruf werden Sie stark mit

+0

Es heißt jetzt Boost_DIR - Boost_DIR-NOTFOUND, ich habe versucht, es so SET (BOOST_DIR "C:/boost_1_60_0 /") zu setzen. Ich habe es immer noch nicht gefunden. Es kann auch nicht Boost_SYSTEM_LIBRARY_DEBUG oder Boost_SYSTEM_LIBRARY_RELEASE finden – Richard

+0

Es gibt eine wichtige Sache mehr. Hast du deinen Boost mit mingw kompiliert? Ich habe festgestellt, dass Sie msvc-14.0 in Ihren Bibliothekspfaden haben. Es ist wichtig, den Boost mit dem gleichen Mingw zu erstellen, auch wenn CMake die Bibliotheken findet, Mingw wird die Linking-Phase nicht bestehen. Ich habe den Cmake-Cache meines Projekts überprüft - und es gibt auch Boost_DIR-NOTFOUND, aber sowohl das Include-Verzeichnis als auch alle Bibliotheken sind korrekt gefunden. –

+0

Ich erkannte, dass ich einen wirklich großen Fehler in Bezug auf die Zusammenstellung gemacht hatte. Ich habe jetzt alles mit dem MinGW Compiler neu kompiliert. Ich musste noch nie Bibliotheken erstellen und ich habe nur die bat-Datei ausgeführt und es verwendete den msvC++ - Compiler, da sowohl MinGW als auch MSVC auf meinem System installiert waren ... Ich entschuldige mich dafür, dass ich Zeit verschwendet habe. – Richard