Как включить boost :: future в CMake? - PullRequest
0 голосов
/ 04 февраля 2020

Я хочу использовать boost::future в моем коде C ++:

#include <boost/thread/future.hpp>
boost::future<int> f...

Просто включение заголовка в файл C++ дает ошибку компиляции:

error: ‘future’ in namespace ‘boost’ does not name a template type

, поэтому я попытался включить future в файл CMakeLists.txt:

find_package(Boost COMPONENTS future REQUIRED)

Однако команда make возвращает ошибку:

CMake Error at /usr/local/share/cmake-3.15/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Could NOT find Boost (missing: future) (found version "1.71.0")

Так, как включить будущее от повышения?

1 Ответ

1 голос
/ 04 февраля 2020

Вам необходимо:

#define BOOST_THREAD_PROVIDES_FUTURE

Это задокументировано здесь

Так что вы можете использовать:

#define BOOST_THREAD_PROVIDES_FUTURE
#include <boost/thread/future.hpp>
boost::future<int> f;

Или:

#include <boost/thread/future.hpp>
boost::unique_future<int> f;

Или:

// any version >= 3 will work
#define BOOST_THREAD_VERSION 5
#include <boost/thread/future.hpp>
boost::future<int> f;
...