2011-01-25 1 views
3

Я думаю об использовании Boost.Preprocessor в каком-то проекте, но я не хочу, чтобы вся библиотека Boost зависела.Является ли Boost.Preprocessor самодостаточным?

Могу ли я просто скопировать его в одиночку и избежать этого? В противном случае, каковы его зависимости?

ответ

4

Новый ответ

Я только что получил bcp работу:

./bcp --list preprocessor --boost=/usr/local/include/boost_1_45_0/ | grep -v preprocessor

no errors detected

б/н Grep я получаю что-то вроде:

boost/preprocessor.hpp
boost/preprocessor/arithmetic.hpp
boost/preprocessor/arithmetic/add.hpp
boost/preprocessor/arithmetic/dec.hpp
boost/preprocessor/arithmetic/detail/div_base.hpp
boost/preprocessor/arithmetic/div.hpp
boost/preprocessor/arithmetic/inc.hpp
boost/preprocessor/arithmetic/mod.hpp
boost/preprocessor/arithmetic/mul.hpp
boost/preprocessor/arithmetic/sub.hpp


Оригинальный ответ

Попробуйте с помощью утилиты подталкивание bcp, чтобы скопировать его

Я быстро grep -R "include" /usr/include/boost/preprocessor/* | grep -v preprocessor и не придумали ни спичек. Я мог бы поклясться, что этот конфиг нужен.

Edit (мой Grep-FUL слаб = /) grep -rh "include" /usr/include/boost/preprocessor/* | grep -v preprocessor | sort |uniq

# error BOOST_PP_ERROR: no indirect file to include
# include BOOST_PP_FILENAME_1
# include BOOST_PP_FILENAME_1
# include BOOST_PP_FILENAME_2
# include BOOST_PP_FILENAME_2
# include BOOST_PP_FILENAME_3
# include BOOST_PP_FILENAME_3
# include BOOST_PP_FILENAME_4
# include BOOST_PP_FILENAME_4
# include BOOST_PP_FILENAME_5
# include BOOST_PP_FILENAME_5
# include BOOST_PP_INDIRECT_SELF

grep -rhE "define\\s+BOOST_PP_FILENAME" /usr/include/boost/preprocessor/* | sort |uniq

# define BOOST_PP_FILENAME_1 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_1)
# define BOOST_PP_FILENAME_2 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_2)
# define BOOST_PP_FILENAME_3 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_3)
# define BOOST_PP_FILENAME_4 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_4)
# define BOOST_PP_FILENAME_5 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_5)

BOOST_PP_ITERATION_PARAMS_ # не кажутся #defined в любом месте. Как ни странно, они #undef ЕД в ./detail/iter/forward#.hpp, так что я, вероятно, не хватает какой-то вложенной макрос или другой ...

+0

Похоже, что компиляторы согласны с реализацией препроцессора. – Anycorn

+0

Ваш тест испорчен. Перед каждым совпадением он печатает, grep будет печатать имя файла, в котором он нашел совпадение. Это будет включать «препроцессор» из префикса имени файла. Используйте опцию '-h', чтобы опустить это. –

+0

На ubuntu это сработало для меня 'mkdir pp; Препроцессор bcp --boost =/usr/include/pp/' – portforwardpodcast

0

Как указано в http://www.boost.org/doc/libs/1_45_0/, Preprocessor является только заголовок библиотеки. Не требуется библиотека времени выполнения.

+4

Это все еще не означает, что он не имеет зависимости от других (только для заголовка) частей boost. – uj2

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