#c #boost #cmake
#c #boost #cmake
Вопрос:
Я использую boost 1.66 в Ubuntu 16.04 и cmake 3.9.5. Я сталкиваюсь со следующей ошибкой, когда выполняю рефакторинг кода моего приложения, а не boost 🙂 :
usr/include/boost/mpl/vector.hpp:37:1: fatal error: boost/mpl/vector/vector256.hpp: No such file or directory
# include BOOST_PP_STRINGIZE(boost/mpl/vector/AUX778076_VECTOR_HEADER)
похоже, AUX778076_VECTOR_HEADER
это vector256.hpp
здесь? И действительно, в vector256.hpp
boost/mpl/vector/
реж. такого нет.
Вероятно, причиной этого стала моя работа по рефакторингу, но я не трогал никаких файлов cmake, и все, что я сделал, это извлек некоторые общие части из кода, чтобы сделать его базовым классом.
Кто-нибудь мог бы пролить свет на это?
Вы можете найти это vector.hpp
здесь: https://www.boost.org/doc/libs/1_52_0/boost/mpl/vector.hpp
РЕДАКТИРОВАТЬ: Это модули, которые я включаю для этого set( ${PROJECT_NAME}_BOOST_COMPONENT_DEPENDENCIES thread system filesystem date_time program_options )
. Я что-то пропустил?
Ответ №1:
Дистрибутив MPL включает в себя только до 50 с чем-то (не помню точно, сколько) записей списка типов для предварительно обработанных векторов (и других контейнеров списка типов).
Если вам нужны более длинные векторы, вам придется создавать эти файлы самостоятельно — к счастью, это просто копирование / вставка.
Комментарии:
1. Я немного запутался. Вы говорите,
256
это количество «записей списка типов для предварительно обработанных векторов»?2. @Генри, просто по соглашению, но да.
3. Я не понимаю, почему это имеет значение в моем случае. В моем коде нет логических изменений или новых функций, почему раньше это не было проблемой?
4. @Henry Я понятия не имею, что вы сделали со своим кодом и как вы его изменили. Я знаю, что это имеет место с предварительно обработанными векторами в MPL. Может быть, вы раньше не использовали предварительно обработанные векторы?
5. Я их использовал. Я не добавлял никакого векторного кода, хотя я переместил часть векторного кода. Вектор выглядит следующим образом:
struct transition_table : boost::mpl::vector<.....>{}
. Я не менял типы в нем, их намного меньше 50.