将 Boost 标头包含到 .h 文件中但不包含在 .cpp 文件中时发生错误

伊坤

我正在处理一个奇怪的问题。我有一个代码,我需要在其中使用Boost typeindex框架实现几个宏由于我的宏仅包含在头文件中,因此我只想像这样#include <boost/type_index.hpp> 包含在头文件中:

#include <stdexcept>
#include <boost/type_index.hpp>

#ifdef L4N_DEBUG
#define ERR_MSG(msg) std::string(boost::typeindex::type_id_with_cvr<decltype(*this)>().pretty_name()) + "::" + __func__ + "(): " + msg + " (" +__FILE__ + ":" + std::to_string(__LINE__) + ")"
#else
#define ERR_MSG(msg) std::string(boost::typeindex::type_id_with_cvr<decltype(*this)>().pretty_name()) + "::" + __func__ + "(): " + msg
#endif // L4N_DEBUG

#define THROW_RUNTIME_ERROR(msg) std::runtime_error(ERR_MSG(msg))
#define THROW_LOGIC_ERROR(msg) std::logic_error(ERR_MSG(msg))
#define THROW_INVALID_ARGUMENT_ERROR(msg) std::invalid_argument(ERR_MSG(msg))
#define THROW_NOT_IMPLEMENTED_ERROR(msg) std::logic_error(ERR_MSG("This function is not implented." + msg))

但我收到错误

/home/martin/MyProject/include/../src/DataSet/../Exception/Exceptions.h:9:10: fatal error: boost/type_index.hpp: No such file or directory

错误消失,当我移动include指令从Exceptions.h头部到.cpp文件,其中Exceptions.h包括。当然,我指定的包含路径是这样的:

add_library(
    MyLib

    ${LIB_TYPE}

    Neuron/Neuron.cpp
    Neuron/NeuronBinary.cpp
    Neuron/NeuronConstant.cpp
    Neuron/NeuronLinear.cpp
    Neuron/NeuronLogistic.cpp        
    Network/NeuralNetwork.cpp        
    Network/NeuralNetworkSum.cpp        
    NetConnection/ConnectionFunctionGeneral.cpp        
    NetConnection/ConnectionFunctionIdentity.cpp        
    LearningMethods/ParticleSwarm.cpp
    LearningMethods/GradientDescent.cpp
    DataSet/DataSet.cpp
    ErrorFunction/ErrorFunctions.cpp
    Solvers/DESolver.cpp
    Exception/Exceptions.cpp
    CSVReader/CSVReader.cpp
    CrossValidator/CrossValidator.cpp
    NormalizationStrategy/NormalizationStrategy.cpp
)

target_include_directories(
    lib4neuro

    PUBLIC
        ${ROOT_DIR}/include

    PRIVATE
        ${EXPRTK_INCLUDE_DIR}
        ${SRC_DIR}
        ${Boost_INCLUDE_DIRS}
)

有什么方法可以为.h文件正确指定包含路径,而不仅仅是为.cpp?

伊坤

最终,更仔细地阅读整个错误消息是有帮助的:

In file included from /home/martin/MyLib/include/../src/DataSet/DataSet.h:17,
                 from /home/martin/MyLib/include/myapi.h:10,
                 from /home/martin/MyLib/src/examples/net_test_1.cpp:12:
/home/martin/4Neuro/include/../src/DataSet/../Exception/Exceptions.h:9:10: fatal error: boost/type_index.hpp: No such file or directory
 #include <boost/type_index.hpp>

正如我们所见,Exceptions.h被错误地包含在DataSet.h其中是 API 的一部分。因此,在尝试使用库编译可执行文件中的代码时,编译失败,而不是在库本身的编译过程中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将标头包含到sQL查询的结果中

来自分类Dev

C ++模板头文件cpp分离,将* .cpp包含到* .h中的解决方案不再起作用

来自分类Dev

将仅包含头文件的库包含在单个 cpp 文件中

来自分类Dev

防止在编译时将标头包含在某些文件中?

来自分类Dev

防止在编译时将标头包含在某些文件中?

来自分类Dev

我应该在主文件中包含已经包含在.h文件中的标头吗?

来自分类Dev

如何将文件同时包含在cpp中作为字符串和代码?

来自分类Dev

如何将文件同时包含在cpp中作为字符串和代码?

来自分类Dev

将包含标头和cpp文件的源文件“编译”为一个巨大的cpp文件

来自分类Dev

如何将仅包含结构的.h文件包含在静态库中

来自分类Dev

如何将仅包含结构的.h文件包含在静态库中

来自分类Dev

标头包含在main.cpp中,但在类中引发错误

来自分类Dev

在多个cpp文件中包含带有定义的h文件

来自分类Dev

将猫鼬模型包含到单个js中(包含在node.js文件中)?

来自分类Dev

当将纯C标头包含到Obj-C iOS项目中时,“对”的含义不明确”

来自分类Dev

将Rnw文件包含在包中

来自分类Dev

在 .cpp 文件中包含包含类的标头无法按预期工作

来自分类Dev

CUDA标头包含失败,可在.cpp文件中使用

来自分类Dev

当作为依赖项包含在Composer中时自动将文件包含在包中

来自分类Dev

当作为依赖项包含在Composer中时自动将文件包含在包中

来自分类Dev

将标头包含在静态声明中时会发生什么?

来自分类Dev

如何将具有自动返回类型的功能从头文件包含到多个cpp文件中

来自分类Dev

如何在Visual Studio中的所有cpp文件中自动包含标头?

来自分类Dev

为什么要在多个cpp文件中包含相同的标头,然后进行编译?

来自分类Dev

无法在 dlib cpp 文件中包含 JPEG_SUPPORT 标头

来自分类Dev

将文件包含到PHP类中

来自分类Dev

将文件内容包含到属性中?

来自分类Dev

使用Visual Studio将标头转换为cpp文件

来自分类Dev

如何使用gradle(5.3.1)新的nativ eplugin将外部仅标头库包含到gradle本机内部版本中?

Related 相关文章

  1. 1

    将标头包含到sQL查询的结果中

  2. 2

    C ++模板头文件cpp分离,将* .cpp包含到* .h中的解决方案不再起作用

  3. 3

    将仅包含头文件的库包含在单个 cpp 文件中

  4. 4

    防止在编译时将标头包含在某些文件中?

  5. 5

    防止在编译时将标头包含在某些文件中?

  6. 6

    我应该在主文件中包含已经包含在.h文件中的标头吗?

  7. 7

    如何将文件同时包含在cpp中作为字符串和代码?

  8. 8

    如何将文件同时包含在cpp中作为字符串和代码?

  9. 9

    将包含标头和cpp文件的源文件“编译”为一个巨大的cpp文件

  10. 10

    如何将仅包含结构的.h文件包含在静态库中

  11. 11

    如何将仅包含结构的.h文件包含在静态库中

  12. 12

    标头包含在main.cpp中,但在类中引发错误

  13. 13

    在多个cpp文件中包含带有定义的h文件

  14. 14

    将猫鼬模型包含到单个js中(包含在node.js文件中)?

  15. 15

    当将纯C标头包含到Obj-C iOS项目中时,“对”的含义不明确”

  16. 16

    将Rnw文件包含在包中

  17. 17

    在 .cpp 文件中包含包含类的标头无法按预期工作

  18. 18

    CUDA标头包含失败,可在.cpp文件中使用

  19. 19

    当作为依赖项包含在Composer中时自动将文件包含在包中

  20. 20

    当作为依赖项包含在Composer中时自动将文件包含在包中

  21. 21

    将标头包含在静态声明中时会发生什么?

  22. 22

    如何将具有自动返回类型的功能从头文件包含到多个cpp文件中

  23. 23

    如何在Visual Studio中的所有cpp文件中自动包含标头?

  24. 24

    为什么要在多个cpp文件中包含相同的标头,然后进行编译?

  25. 25

    无法在 dlib cpp 文件中包含 JPEG_SUPPORT 标头

  26. 26

    将文件包含到PHP类中

  27. 27

    将文件内容包含到属性中?

  28. 28

    使用Visual Studio将标头转换为cpp文件

  29. 29

    如何使用gradle(5.3.1)新的nativ eplugin将外部仅标头库包含到gradle本机内部版本中?

热门标签

归档