簡體   English   中英

使用CMake時出現“找不到增強庫”錯誤

[英]“Could not find boost libraries” error when using CMake

我有以下CMakeLists.txt文件:

cmake_minimum_required(VERSION 2.6)

project (some_project)

set(BOOST_ROOT "E:/libs/boost_1_54_0")
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
find_package(Boost COMPONENTS unit_test_framework REQUIRED)
include_directories(${Boost_INCLUDE_DIR})
link_directories(${Boost_LIBRARY_DIR})

set (SOURCES 
    main.cpp) 

add_executable (${PROJECT_NAME} ${SOURCES})
target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})

enable_testing ()
add_test (${PROJECT_NAME} ${PROJECT_NAME})

當我嘗試對此文件使用CMake時,出現以下錯誤:

cmake.exe .
-- Building for: Visual Studio 12
-- The C compiler identification is MSVC 18.0.21005.1
-- The CXX compiler identification is MSVC 18.0.21005.1
-- Check for working C compiler using: Visual Studio 12
-- Check for working C compiler using: Visual Studio 12 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 12
-- Check for working CXX compiler using: Visual Studio 12 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMake Error at e:/software/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake:1111 (message):
  Unable to find the requested Boost libraries.

  Boost version: 1.54.0

  Boost include path: E:/libs/boost_1_54_0

  Could not find the following static Boost libraries:

          boost_unit_test_framework

  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.
Call Stack (most recent call first):
  CMakeLists.txt:8 (find_package)


-- Configuring incomplete, errors occurred!

在“ e:\\ libs \\ boost_1_54_0 \\ stage \\ lib \\”目錄中,我具有以下* .lib文件:

libboost_unit_test_framework-vc110-mt-1_54.lib
libboost_unit_test_framework-vc110-mt-gd-1_54.lib
libboost_unit_test_framework-vc110-mt-s-1_54.lib
libboost_unit_test_framework-vc110-mt-sgd-1_54.lib

我究竟做錯了什么?

Visual Studio的版本號很亂。 VS10是Visual Studio 10,但VS11是Visual Studio 2012,而VS12是Visual Studio 2013。

您只是在CMake中選擇了錯誤的生成器。 如果要針對2012進行構建,則正確的生成器是Visual Studio 11 只需刪除您的CMakeCache.txt使用正確的生成器再次運行CMake即可:

cmake -G "Visual Studio 11" .

哦,就在我們這么做的時候:考慮改做一個源代碼外的構建 ,那樣做會更有趣。

除此之外,您的設置還可以。

代替

set(BOOST_ROOT "E:/libs/boost_1_54_0")
...
find_package(Boost COMPONENTS unit_test_framework REQUIRED)

,我建議您只嘗試

find_package(Boost COMPONENTS unit_test_framework REQUIRED HINT "E:/libs/boost_1_54_0").

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM