最近打算研究一下DirectX。于是关注了一下DirectX环境的配置问题。

发现每次新建一个DX项目时,都需要配置一遍项目属性,比较麻烦。于是想通过用项目模板来完成这一工作。如下是整个模板的生成过程。

笔者的环境是Win7下的VS2005

首先在新建项目,项目类型里选择Virtual C++ 自定义向导。填写好名称和位置。位置最好放到“Visual Studio用户项目模板位置”(不知道的可以在VS中,【工具】【选项】【项目和解决方案】里查看位置。)

确定,然后出现自定义应用程序向导。

下一步,填写向导友好名称(会显示在新建项目面板中)。由于这里不需要用户界面,所以去掉勾选“用户界面”。

完成。这时VS会在如下位置生成一些文件:

1.           Program Files\Microsoft Visual Studio 8\VC\vcprojects

该目录下会生成三个文件。

一个ico文件。将会显示在新建项目面板中。

一个vsdir文件。定义如何把向导包含的信息呈现给用户。

一个vsz文件。记录项目模板的存放路径。这个路径这是下面要说的第二个位置了。

2  ..\Templates\ProjectTemplates\Virtual C++\DirectX.

即我们在新建此模板时自己指定的位置。这里会生成一个工程。就是当前VS里显示的这个项目。

该项目下有五个文件夹。分别是:

HTML文件、图像文件、杂项文件、模板文件和脚本文件。

HTML文件与图像文件两个文件夹用于存放界面向导的相关文件。这里是非UI的向导,所以这两个文件夹里没有文件。

杂项文件夹里,除了上面介绍的三个文件,还有default.vcprojTemplates.inf第一个文件是用此模板生成项目的项目文件模板,第二个文件,记录用该模板生成的项目里应该包含哪些文件(这里有一些需要注意的地方,该在后面指出)。

模板文件夹。这个文件夹 应该对应到模板项目下的Templates文件夹。即…\Templates\ProjectTemplates\Virtual C++\DirectX\DirectX\Templates。里面包含了利用该模板生成项目时会带进去的文件。

最后一个文件夹,脚本文件夹。只有一个文件,default.js。这个文件是整个模板项目的灵魂。

 

至此,第一步算是完成了。

第二步我们将根据自己的需要,改造这个项目模板。

1.           修改脚本文件。

Default.js的第一个方法 OnFinish)。这个方法应该算是整个脚本的主函数。其它的方法,基本就可以顾名思义了。

我们希望新项目里要包含“头文件”“源文件”“资源文件”三个文件夹,分别存放对应的文件。这里就需要修改AddFilters(…)方法,添加过滤组了。添加格式如下:

var group = proj.Object.AddFilter([文件夹名]').Filter = "[过滤格式]";

 

为了避免每个DX项目都要配置附加目录的麻烦,我们将在项目模板里将附加目录添加进项目。

这里需要修改AddConfig(…)方法。这里将分别配置DebugRelease两种配置。在VCCLCompilerTool配置下面添加AdditionalIncludeDirectories属性项,并配置属性为安装DXInclude文件夹。

VCLinkerTool 配置下面添加AdditionalLibraryDirectories属性并配置该属性为安装DXLib库目录。添加AdditionalDependencies属性项,并配置属性为所需要使用到的lib,各个库之间用空格分开。添加GenerateDebugInformation属性,关配置为True.

这里需要注意的是,只有项目里添加了C++语言相关的文件(.h头文件)时,链接器和编译器的属性配置才有效。

2.           修改Templates.inf文件。

这个文件前面做了介绍,文件里包含模板需要带出的文件的文件名。

这里新建一个测试文件datongyi.cpp,关将文件名加入到inf文件里。

至此模板基本上配置完成了。

 

我们新建一个项目来测试这个模板。

 

但是VS给出了下面的对话框:无法访问所需文件的数据,因为它处于僵停状态

然后是:未能完成操作。未指定的错误

 

这是什么原因呢?

我们打开 \Templates\ProjectTemplates\Virtual C++\DirectX\DirectX\Templates\2052文件夹,发现该文件夹里并没有包含datongyi.cpp文件。

将外层的datongyi.cpp文件剪切到2052文件夹,用模板再次新建一个项目,调试成功!