【发布时间】:2017-04-06 19:30:59
【问题描述】:
鉴于以下情况,我正在努力寻找在 Visual Studio(即 2015)中设置依赖项的正确方法:
我有 2 个项目:
- Engine:它是一个静态库项目,依赖于我在“Librarian”、“Additional dependencies”部分中指定的 glfw、glew 和 opengl .lib 文件。我还正确添加了 include 和 libs 目录。
- Game:它应该只能访问 Engine 项目提供的 API,所以我将 Engine headers 目录添加到 Game 包含目录,生成的 Engine.lib 与附加库目录相同。
到此阶段,Engine 项目编译成功。
我希望 Game 项目也能工作,但是当我尝试使用简单的 main.cpp 编译该项目时,编译器显示此错误(引用来自 Engine 项目的文件):
-- 错误 C1083 无法打开包含文件:'GL/glew.h':没有这样的文件或目录
我不想在我的游戏项目中包含 opengl、glew 和 glfw 库以及包含目录,因为用户不应访问此 API。
那么...实现这一点的正确方法是什么(越简单越好)?
提前致谢
【问题讨论】:
-
如果
Game中的文件包含Engine中的头文件,则includes GL/glew.h 则间接GL/glew.h 包含在该文件中。解决此问题的一种方法通常是将此类包含移动到Engine的源文件中,并尽可能删除标题中的include。这样它只会被使用它的文件包含,而不是被每个使用该标题的文件包含。 -
我猜这是唯一可以接受的选项。但是,这意味着我的代码架构中需要进行一些小的设计调整,因为此标头 (GL20.h) 映射了所需的常量,例如“GL_VERTEX_SHADER”或“GL_FRAGMENT_SHADER”,它们作为常量表达式包含在标头 ShaderProgram 中的枚举(着色器类型)中。 h...如果我将其定义更改为 GL20.cpp,则它们不能用作上述枚举中的常量表达式。 (在其他一些变化中)。感谢您的帮助!
标签: c++ visual-studio opengl static-libraries glew