许多小伙伴们按照网上教程生成了PG在windows下的编译环境。但是不知道每个文件的含义,该文章简单介绍一下各个文件的含义。水平有限,如有错误,多谢指出。
PostgreSQL建立Microsoft Visual Studio 可以编译的工程时,用到了下面这些工具:
-配置文件-:
config_default.pl
PG编译时默认的配置参数,包。
config.pl
也是配置参数,主要是针对PG外部环境的配置参数。
buildenv.pl
环境设置,用户编译环境的设置。
区别:
buildenv.pl和config.pl主要构建PG编译时的外部环境。
config_default.pl是构建PG编译的内部的配置参数。
- 工具包-:
build.pl
生成可执行程序的主要包,如:postgres二进制程序的生成。也是PG编译的入口。build.bat会直接调用该包,并把接受到的参数传递给它。
builddoc.pl
生成文档的主要工具包。
clean.bat
清除编译过程中产生的文件。
install.pl
用来安装生成的可执行文件
mkvcbuild.pl
用来生成Visual Studos工程文件
vcregress.pl
用来运行回归测试的工具包
- 内部工具组 -:
gendef.pl
生成.DEF文件的内部工具
pgbison.pl
使用bison执行.y文件的内部工具
pgflex.pl
使用blex执行.l文件的内部工具
- 内部模块-
Install.pm
包含安装逻辑的模块。
Mkvcbuild.pm
生成Visual Studio 工程文件的代码逻辑模块
Project.pm
包含了生成Visual Studio工程文件的公共代码。还提供了所有项目文件生成器的接口
Solution.pm
这个模块包含的代码用来生成Visual Studio解决方案文件。
MSBuildProject.pm
这个模块包含的代码用来生成MSBuild的基础项目文件(Visual 2010及以上版本的的项目)
VCBuildProject.pm
这个模块包含的代码用来生成VCBuild基础的项目文件(Visual 2005/2008)。
VSObjectFactory.pm
提供为当前环境创建适当的项目/解决方案文件的模块
-流程-:
通过键入“build”,用户可以启动build.bat批处理,它向build.pl传递它的后面的参数。
在build.pl中,buildenv.pl用于设置构建环境(如:bison和flex的路径)。除此之外,config.pl文件会合并到config_default.pl中,用来生成配置文件参数。
这些配置参数传递给Mkvcbuild:: Mkvcbuild (Mkvcbuild.pm),它创建Visual Studio项目和解决方案文件。
它通过使用 VSObjectFactory::来创建实现解决方案接口的对象(vs2005、vs2008、vs2010、vs2012、vs2013、vs2015、vs2017解决方案),方案的生成依赖于用户的环境。
然后添加对象来实现相应的项目接口(VCBuildProject.pm中产生VC2005/VC2008项目,MSBuildProject.pm用来生成VC2010/VC2012/VC2013/VC2015或者VC2017项目)。
然后调用Solution::Save方法,将生成的解决方案和项目的内容保存成适当的格式。
再次在build.pl中执行启动适当构建程序(msbuild或vcbuild)的最后一步。




