BOOST_PP_ITERATE() приводит к "нет такого файла или каталога"

Я изучаю библиотеку препроцессора boost (потому что мне нужно ее использовать), и я хотел попробовать механизм итерации файла. Я создал минимальный проект с a.cpp и b.hpp. То, что я пытаюсь сделать, это включить много времени b.hpp через pp boost:

#include <boost/preprocessor/iteration/iterate.hpp>

#define BOOST_PP_ITERATION_LIMITS (0, 5)
#define BOOST_PP_FILENAME_1 "b.hpp"
#include BOOST_PP_ITERATE()

Когда я пытаюсь скомпилировать (с -E, чтобы увидеть результат препроцессора):

g++ -E a.cpp > pp_result

Я получил эту ошибку:

В файле, включенном из a.cpp: /usr/local/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:47:37: ошибка: b.hpp: нет такого файла или каталога

b.hpp находится в том же каталоге, я не вижу, что я ошибаюсь. Похоже, g++ ищет b.hpp в том же каталоге, что и forward1.hpp, но, следуя документации Boost, мой код должен работать (моя версия Boost 1.44).

Кто-нибудь испытывал такую ​​же проблему?

1 ответ

Решение

Да, вам нужно добавить -I. в командной строке, чтобы заставить его работать. Это добавит каталог, в котором вы запустили gcc, к пути поиска include, что позволит компилятору найти файл b.hpp,

Другие вопросы по тегам