【问题标题】:Is Boost.Preprocessor self-contained?Boost.Preprocessor 是独立的吗?
【发布时间】:2011-06-15 10:04:09
【问题描述】:

我正在考虑在某个项目中使用Boost.Preprocessor,但我不想让整个 Boost 库成为依赖项。

我可以单独复制它并摆脱这个吗?否则,它的依赖是什么?

【问题讨论】:

    标签: boost-preprocessor


    【解决方案1】:

    新答案

    我刚刚得到bcp 工作:

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

    未检测到错误

    没有 grep 我得到类似的东西:

    升压/预处理器.hpp
    升压/预处理器/算术.hpp
    升压/预处理器/算术/add.hpp
    升压/预处理器/算术/dec.hpp
    升压/预处理器/算术/细节/div_base.hpp
    升压/预处理器/算术/div.hpp
    升压/预处理器/算术/inc.hpp
    升压/预处理器/算术/mod.hpp
    升压/预处理器/算术/mul.hpp
    boost/预处理器/算术/sub.hpp


    原答案

    尝试使用 boost bcp 实用程序来复制它

    我做了一个快速的grep -R "include" /usr/include/boost/preprocessor/* | grep -v preprocessor 并没有想出任何匹配。我可以发誓需要配置。

    编辑(我的 grep-ful 很弱 =/) grep -rh "include" /usr/include/boost/preprocessor/* | grep -v preprocessor | sort |uniq

    # 错误 BOOST_PP_ERROR: 没有要包含的间接文件
    # 包括 BOOST_PP_FILENAME_1
    # 包括 BOOST_PP_FILENAME_1
    # 包括 BOOST_PP_FILENAME_2
    # 包括 BOOST_PP_FILENAME_2
    # 包括 BOOST_PP_FILENAME_3
    # 包括 BOOST_PP_FILENAME_3
    # 包括 BOOST_PP_FILENAME_4
    # 包括 BOOST_PP_FILENAME_4
    # 包括 BOOST_PP_FILENAME_5
    # 包括 BOOST_PP_FILENAME_5
    # 包括 BOOST_PP_INDIRECT_SELF

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

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

    BOOST_PP_ITERATION_PARAMS_# 似乎在任何地方都不是#defined。奇怪的是,它们在 ./detail/iter/forward#.hpp 中是 #undefed,所以我可能缺少一些嵌套宏或其他...

    【讨论】:

    • 哇,至少编译器同意预处理器实现。
    • 你的测试有缺陷。在打印的每个匹配项之前,grep 将打印找到匹配项的文件的名称。这将包括文件名前缀中的“预处理器”。使用 -h 选项省略它。
    • 在 ubuntu 上这对我有用 mkdir pp; bcp preprocessor --boost=/usr/include/ pp/
    【解决方案2】:

    http://www.boost.org/doc/libs/1_45_0/ 所述,预处理器是一个仅标头库。不需要运行时库。

    【讨论】:

    • 这仍然不意味着它不依赖于 boost 的其他(仅标头)部分。
    猜你喜欢
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 2015-05-13
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    相关资源
    最近更新 更多