【发布时间】:2012-08-27 08:25:41
【问题描述】:
我的项目 1 依赖于 Boost 和 GLM。对于 Boost 和 GLM,我指定了“附加包含目录”来引用每个的 C++ 文件。项目 1 被创建为静态库项目。当我构建项目 1 时,一切正常。项目 2 通过参考管理器引用了项目 1,但是当我构建项目 2 时,我得到了
fatal error C1083: Cannot open include file: 'boost/something/etc.
项目 1 中的文件。为什么我在构建项目 2 时会收到有关项目 1 的错误?项目 1 还使用了 Boost 中的 regex 库,在使用之前必须将其内置到 .lib 中。如何让我的 Project 1 静态库将内置的 Boost 正则表达式库和 GLM 包含文件合并到其中?仅供参考,项目 2 是项目 1 的测试项目。我想要这样的东西:
(Boost regex lib + GLM 包括)--> 项目 1 ==> Project_1.lib
(Boost 单元测试库 + Project_1.lib) --> 项目 2 ==> Project_2.exe
--> 表示依赖/引用,==> 表示输出。
这可能吗?我遇到的编译错误和链接器错误数不胜数。
【问题讨论】:
-
项目 2 中的源文件是否包含项目 1 的头文件?项目 1 中的那些头文件是否包括(直接或间接)来自 Boost 和/或 GLM 的头文件?
-
是的,我在项目 2 中有一个文件,它有一个包含:#include "MyFileReader" 我的 "MyFileReader" 包含 Boost 和 GLM。 GLM 是一个只有头文件的库,仅供参考。
-
然后我会按照 Preet 的建议做,并使用前向声明和/或 PIMPL 成语来防止将项目 1 的实施细节暴露给消费者。
标签: c++ visual-studio-2010 boost dependencies dependency-management