在Visual Studio中构建软件

时间:2015-05-12 02:07:23

标签: c visual-studio visual-c++

我被宠坏了,因为我学会了在OSX和Linux上编写软件,其中工具很简单,IDE通常只使用外部构建系统来完成所有繁重工作。我最近尝试过VS2015,我不得不说代码编辑器非常好,UI也不错。我不会说我喜欢qtcreator这样的界面,但是调试支持看起来还不错。

无论如何,我正在开发一款游戏并想尝试使用Visual Studio(只有视觉工作室 - 我知道CMake和premake)来构建我的项目。问题是它不是一个非常简单的构建项目 - 至少在Visual Studio中不是这样。

用标准C写的,没有惊喜。我有一个库(common.lib)及其客户端应用程序(mygame.exe)。 common.libmygame.exe使用来自libpngGLEWSDL2freetype的功能,因此我遇到了两件事:包括路径和链接器路径。我可以在我的项目设置中手动指定这些,但是如果我想将项目交给其他人工作呢?我的库安装在C:/OSS中,但可能不是。

使用30行自动工具我可以使用pkg-config找到正确的包含路径和链接器路径并链接正确的库,但在Windows上使用它真的很麻烦。在Visual Studio中配置依赖项的标准方法是什么?另外,告诉Visual Studio mygame.exe需要与common.lib关联的最佳方法是什么?

在开发过程的后期,使用Visual Studio运行自定义构建步骤,将GLSL着色器嵌入到我的应用程序中是否可行?

1 个答案:

答案 0 :(得分:0)

为了定义链接依赖关系,有三种方法:

  • 定义'外部'的标准方式。 Visual Studio中的链接依赖项是在项目属性中输入它们。如果您正在开发一个C项目,那么它将位于Project->Properties... Linker->Input->Additional Dependencies属性中。要配置库所在的目录,请在Linker->General->Additional Library Directories中完成。通常,您可以创建与项目相关的目录,这样您就可以重新定位项目,或者让其他用户使用不同的工作区映射从源代码控制中获取它。
  • 如果要在同一个解决方案文件中编译静态库,在可执行文件/ dll和静态库之间添加依赖项将导致静态库(默认情况下)链接到可执行文件中,因此您无需修改任何设置。这可以从Project->Project Dependencies...
  • 完成
  • 您还可以使用语句来链接库,例如:源代码本身中的#pragma comment(lib, "library.lib"),这将导致链接器尝试与" library.lib"链接。但是,我不推荐它,因为它可以混淆链接过程。

对于嵌入GLSL着色器,您可以将它们作为字符串嵌入到.c / .cpp文件中,并编译该源文件,因此它不是嵌入资源的非常好的示例。但是,一般来说,您可以通过创建资源文件,然后导入所需的任何文件,在应用程序中嵌入资源。有关详细信息,请参阅here。然后,您可以使用FindResourceLoadResource访问它们。

如果您正在寻找以某种方式预编译着色器并嵌入它们(就像使用DirectX HLSL一样),您可以使用自定义构建命令来执行此操作。在Project->Properties...Custom Build Step中 - 通常这是在每个文件的基础上使用。您还可以为特定类型的文件(例如* .glsl)创建自定义构建规则。有关如何执行此操作的详细信息,请参阅here

此外,很多人都喜欢讨厌Visual Studio。它确实有学习曲线,就像其他所有功能相当的IDE一样。如果你不喜欢它,就不要使用它。正如您所说,即使在Windows上,您还有很多其他选择。