2016-11-30 33 views
2

使用以下CMake代碼:CMake的與升壓1.62.0: 「沒有Boost庫被發現」

cmake_minimum_required(VERSION 3.6) 
project(TrustLineManager) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

set(BOOST_ROOT D:/Tools/boost_1_62_0/) 

set(Boost_INCLUDE_DIRS D:/Tools/boost_1_62_0/boost) 
set(Boost_LIBRARY_DIRS D:/Tools/boost_1_62_0/libs) 

set(BOOST_INCLUDEDIR C:/MinGW/include) 
set(BOOST_LIBRARYDIR C:/MinGW/lib) 

set(Boost_USE_STATIC_LIBS ON) 
set(Boost_USE_MULTITHREADED ON) 

find_package(Boost 
     1.62.0 
     COMPONENTS system 
        filesystem 
     REQUIRED) 

include_directories(${Boost_INCLUDE_DIRS}) 
target_link_libraries(TrustLineManager ${Boost_LIBRARIES}) 

我得到這個錯誤:

Error:Unable to find the requested Boost libraries. 
Boost version: 1.62.0 
Boost include path: D:/Tools/boost_1_62_0 
Could not find the following static Boost libraries: 
     boost_system   boost_filesystem 
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. 

我應該怎麼做來解決它?

編輯:

我修改CMake代碼爲:

cmake_minimum_required(VERSION 3.6) 
project(TrustLineManager) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

set(SOURCE_FILES main.cpp) 

set(BOOST_ROOT "D:/Tools/boost_1_62_0") 

set(Boost_USE_STATIC_LIBS ON) 
set(Boost_USE_MULTITHREADED ON) 

find_package(Boost) 
include_directories(${Boost_INCLUDE_DIRS}) 

add_executable(TrustLineManager ${SOURCE_FILES}) 

target_link_libraries(TrustLineManager Boost::filesystem Boost::thread) 

我現在有這個錯誤:

Error:Target "TrustLineManager" links to target "Boost::filesystem" but the target was not found. Perhaps a find_package() call is missing for an IMPORTED target, or an ALIAS target is missing? 

這裏是加速目錄內容的截圖:

enter image description here

+2

爲什麼不按照錯誤信息的指示?你確定增強的東西安裝在'C:\ MinGW'上嗎? –

+0

@πάνταῥεῖ導致boost目錄不包含forlders include和lib –

+0

您擁有哪個CMake版本?如果它太舊,它的「FindBoost.cmake」將無法找到最新的Boost版本。我認爲對Boost 1.62的支持僅在CMake 3.7(或者可能是CMake 3.6.3)中引入。 – oLen

回答

0

很明顯,CMake發現Boost,因爲它能夠檢測到它的版本(1.62.0)。

CMake使用文件FindBoost.cmake來確定要鏈接的庫。 當新的增強版本出現時,此文件會不斷更新。 那裏,對Boost 1.62.0的支持僅適用於CMake> = 3.7.0。

因此,只需更新您的CMake版本(或只是文件FindBoost.cmake),你會沒事的。

+0

我遇到了同樣的問題,我有最新版本的CMake(3.9.3)。我正在尋找1.6.5,當我檢查FindBoost.cmake時,我發現1.6.5在那裏......不知道發生了什麼。 –