2016-04-01 3 views
0

В течение последних нескольких дней я изо всех сил пытался получить библиотеки Boost, включенные в мой проект. Я читал и использовал предложения, сделанные многочисленными плакатами в Stack Overflow, и по какой-то причине я не понимаю, что я все еще не могу заставить CMake найти Boost, или если он найдет Boost, я не могу скомпилировать, потому что он не может найти библиотеку boost_system, с которой, по-видимому, мне нужно связать, чтобы удалить системную конфигурацию(), не найденную ошибку.CLion and Boost 1.60.0

Я в настоящее время работает на Windows 10 с реализацией MinGW ГНУ C++ Compiler v4.9.3-1

Boost, извлекается сейчас на моей системе здесь:

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 ** Это выход при работе CMake с -DBoost_Debug = 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. Nevermind Я понял, обновление выше – Richard

+1

Попробуйте найти файл, который начинается с «libboost_system» в C:/boost_1_60_0/и проверяет, что он находится в _boost_LIBRARY_SEARCH_DIRS_RELEASE или _boost_LIBRARY_SEARCH_DIRS_DEBUG? –

ответ

1

Есть некоторые полезные флаги, чтобы помочь FindBoost найти библиотеки.

Попробуйте установить эти переменные (включен или выключен - это зависит от вашей установки наддува) перед вызовом 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 "") 

Установка флага с set(Boost_DETAILED_FAILURE_MSG TRUE) очень поможет вам в диагностике

+0

Теперь он говорит Boost_DIR - Boost_DIR-NOTFOUND, я попробовал установить его так, как этот SET (BOOST_DIR "C:/boost_1_60_0 /"). Все еще не нашел. Он также не может найти Boost_SYSTEM_LIBRARY_DEBUG или Boost_SYSTEM_LIBRARY_RELEASE – Richard

+0

Есть еще одна важная вещь. Вы скомпилировали свой импульс с помощью mingw? Я заметил, что у вас есть msvc-14.0 в ваших библиотечных путях. Важное значение имеет создание повышения с помощью одного и того же потока, даже если cmake найдет библиотеки, mingw не удастся выполнить этап компоновки. Я проверил кэш кэш-памяти моего проекта - и есть Boost_DIR-NOTFOUND, но и каталог include, и все библиотеки найдены правильно. –

+0

Я понял, что сделал большую ошибку в отношении компиляции. Я перекомпилировал все сейчас с помощью компилятора MinGW. Мне никогда не приходилось создавать libs раньше, и я просто запускал bat-файл, и он использовал компилятор msvC++, поскольку у меня установлены как MinGW, так и MSVC в моей системе ... Я прошу прощения за то, что тратил ваше время. – Richard

Смежные вопросы