Boost_PP_ITERATE () приведет к «Нет такого файла или каталога»
-
26-09-2019 - |
Вопрос
Я изучаю Boost Preprocessor Library (потому что мне нужно его использовать), и я хотел попробовать механизм итерации файла. Я создал минимальный проект с A.CPP и B.HPP. То, что я пытаюсь сделать, это в том числе много времени B.HPP через Boost PP:
#include <boost/preprocessor/iteration/iterate.hpp>
#define BOOST_PP_ITERATION_LIMITS (0, 5)
#define BOOST_PP_FILENAME_1 "b.hpp"
#include BOOST_PP_ITERATE()
Когда я пытаюсь скомпилировать (с -d, чтобы увидеть результат препроцессора):
g++ -E a.cpp > pp_result
Я получил эту ошибку:
В файле, включенном из A.CPP: /usr/local/include/boost/preprocessor/iteration/detail/ter/forward1.hpp:47:37: Ошибка: B.HPP: Нет такого файла или каталога
B.HPP в том же каталоге, я не вижу, что я делаю не так. Похоже, что поиск G ++ B.HPP в том же каталоге, что и FOVERSE1.HPP, но после документации по повышению, мой код должен работать (моя версия Boost - 1.44).
Кто-нибудь испытывал та же проблема?
Решение
Да, вам нужно добавить -I.
в командную строку, чтобы сделать его работать. Это добавляет каталог, который вы начали GCC в включенном пути поиска, что позволяет компилятору найти файл b.hpp
.