2016-09-13 2 views
0

Я пытаюсь скомпилировать инструмент, который дал мне мой учитель. Он использует библиотеки Boost (которые я установил и установил переменные среды), а Boost найден Cmake.Cmake ищет неправильные файлы?

Однако Cmake говорит мне, что не может найти библиотеку с именем «boost_program_options». Результат cmake говорит мне, что он ищет файлы с именами «libboost_program_options- vc110 -mt-1_61». В моем Boost-каталоге я могу найти файлы с именем «libboost_program_options- vc140 -mt-1_61», которые все содержатся в D: \ local \ boost_1_61_0 \ lib64-msvc-14.0 (к которому я установил BOOST_LIBRARYDIR). BOOST_ROOT ist установлен в D: \ local \ boost_1_61_0, а BOOST_INCLUDEDIR установлен в D: \ local \ boost_1_61_0 \ boost. Итак, почему Cmake ищет неправильные файлы?

Cmake файл я получил это

project(generator) 
cmake_minimum_required(VERSION 2.8) 
set(Boost_USE_STATIC_LIBS ON) 
set(Boost_USE_MULTITHREADED ON) 
set(BOOST_MIN_VERSION "1.55.0") 
find_package(Boost COMPONENTS program_options REQUIRED) 
include_directories(${Boost_INCLUDE_DIRS}) 
aux_source_directory(. SRC_LIST) 
add_executable(${PROJECT_NAME} ${SRC_LIST}) 
set(CMAKE_CXX_FLAGS "-lboost_program_options") 

if(UNIX) 
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=gnu++0x") 
endif() 

ответ

1

Короче:

Проект Visual Studio 11 должны использовать библиотеки форсирование с суффиксом -vc110. С библиотеками -vc140Вместо этого следует использовать Visual Studio 14. Версия MSVC выбирается cmake-generator.

Пояснения:

Это FindBoost.cmake скрипт поиска конкретных библиотек. (Вы вызываете этот скрипт через find_package(Boost)).

Boost использует библиотеки достаточно для различения библиотек для разных целей. В таких количествах, как -vc110, используется компилятор, в котором были скомпилированы библиотеки. -vc110 соответствует Visual Studio 11, -vc140 - до Visual Studio 14.

В вашем случае Используется cmake-generatorVisual Studio 11 (возможно, это генератор по умолчанию для установки вашего cmake). Поэтому библиотеки Boost должны быть совместимы с его компилятором. Вот почему обыскиваются только библиотеки с суффиксом -vc110: другие библиотеки не могут быть связаны с этим компилятором.

+0

Благодарим вас за полезное разъяснение, но я все еще не уверен, как исправить мою проблему. Должен ли я использовать другую установку Boost? Или я могу как-то сказать Cmake искать -vc140 файлов? – user3190009

+0

Вы должны использовать установку Boost, которая подходит для версии Visual Studio ** у вас есть **. Если у вас установлено несколько Visual Studio, вам нужно указать cmake, какую установку вы хотите использовать. Это достигается путем указания соответствующего [cmake-generator] (https://cmake.org/cmake/help/v3.0/manual/cmake-generators.7.html) с опцией '-G' в вызове' cmake'. – Tsyvarev

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