# 18.1.用Visual C++或微软Windows SDK构建

18.1.1. 要求

18.1.2. 64位Windows的特殊注意事项

18.1.3. 建筑物

18.1.4. 清洁和安装

18.1.5. 运行回归测试

PostgreSQL可以使用微软的Visual C++编译器套件构建。这些编译器可以来自Visual Studio、Visual Studio Express或某些版本的Microsoft Windows SDK。如果尚未设置Visual Studio环境,最简单的方法是使用Visual Studio 2022或Windows SDK 10中的编译器,这两种编译器都是从Microsoft免费下载的。

Microsoft编译器套件支持32位和64位版本。Visual Studio 2013到Visual Studio 2022以及独立的Windows SDK 8.1a到10版本都可以使用32位PostgreSQL版本。Microsoft Windows SDK 8.1a至10版或Visual Studio 2013及更高版本支持64位PostgreSQL版本。在使用Visual Studio 2013到Visual Studio 2022构建时,在Windows 7和Windows Server 2008 R2 SP1下支持编译。

使用VisualC++或平台SDK构建的工具在src\tools\msvc目录构建时,确保系统路径中没有来自MinGW或Cygwin的工具。另外,确保你有所有需要的VisualC++工具在路径中可用。在Visual Studio中,启动Visual Studio命令提示符。如果希望生成64位版本,则必须使用64位版本的命令,反之亦然。从Visual Studio 2017开始,可以使用以下命令行执行此操作:VsDevCmd。球棒看见-救命查看可用选项及其默认值。vsvars32.球棒可在Visual Studio 2015和更早版本中使用,用于相同目的。在Visual Studio命令提示符下,可以使用瓦萨尔。球棒命令,例如。,瓦萨尔。bat x64 10.0.10240.0以64位版本的Windows 10为目标。看见-救命其他的选择瓦萨尔。球棒。所有命令都应该从src\tools\msvc目录

在生成之前,可能需要编辑该文件配置。pl以反映要更改的任何配置选项,或要使用的任何第三方库的路径。完整的配置是通过首先读取和解析文件来确定的配置默认值。pl,然后应用配置。pl。例如,要指定Python安装的位置,请在配置。pl:

$config->{python} = 'c:\python26';

您只需要指定与中不同的参数配置默认值。pl.

如果需要设置任何其他环境变量,请创建一个名为buildenv。pl并将所需的命令放在那里。例如,要在bison不在路径中时为其添加路径,请创建一个包含以下内容的文件:

$ENV{PATH}=$ENV{PATH} . ';c:\some\where\bison\bin';

要向Visual Studio生成命令(msbuild或vcbuild)传递其他命令行参数,请执行以下操作:

$ENV{MSBFLAGS}="/m";

# 18.1.1.要求

构建PostgreSQL需要以下附加产品。使用配置。pl文件来指定库在哪些目录中可用。

微软Windows SDK

如果您的生成环境未附带受支持的Microsoft Windows SDK版本,建议您升级到最新版本(当前版本为10),可从下载https://www.microsoft.com/download (opens new window).

必须始终在SDK中包含Windows标头和库部分。如果安装了包括VisualC++编译器的Windows SDK,则不需要VisualStudio来构建。请注意,从8.0a版开始,Windows SDK不再附带完整的命令行生成环境。

ActiveState Perl

运行构建生成脚本需要ActiveState Perl。MinGW或Cygwin Perl将不起作用。它也必须出现在路径中。二进制文件可以从https://www.activestate.com (opens new window)(注:需要5.8.3或更高版本,免费标准分发即可)。

以下附加产品不需要入门,但需要构建完整的软件包。使用配置。pl文件来指定库在哪些目录中可用。

ActiveState TCL

用于构建PL/Tcl(注:需要8.4版,免费标准发行版就足够了)。

野牛和Flex

Bison和Flex需要从Git构建,但从发布文件构建时不需要。只有Bison 1.875或2.2及更高版本可以工作。Flex必须是2.5.31或更高版本。

Bison和Flex都包含在msys工具套件中,可从http://www.mingw.org/wiki/MSYS (opens new window)作为MinGW编译器套件的一部分。

您需要添加包含弯曲exe野牛exe指向中的PATH环境变量buildenv。pl除非他们已经在路上了。对于MinGW,目录是\msys\1.0\binMinGW安装目录的子目录。

# 笔记

GnuWin32的Bison发行版似乎有一个bug,当它安装在名称中带有空格的目录中时,会导致Bison出现故障,例如英语安装中的默认位置C:\Program Files\GnuWin32考虑安装到C:\GnuWin32或者在路径环境设置中使用GnuWin32的NTFS短名称路径(例如。,C:\PROGRA~1\GnuWin32).

差别

Diff是运行回归测试所必需的,可以从http://gnuwin32.sourceforge.net (opens new window).

Gettext

Gettext需要使用NLS支持进行构建,可以从http://gnuwin32.sourceforge.net (opens new window).请注意,二进制文件、依赖项和开发人员文件都是必需的。

麻省理工学院Kerberos

GSSAPI身份验证支持所需。MIT Kerberos可从https://web.mit.edu/Kerberos/dist/index.html (opens new window).

libxml2和libxslt

需要XML支持。二进制文件可以从https://zlatkovic.com/pub/libxml (opens new window)或者来源于http://xmlsoft.org (opens new window).请注意,libxml2需要iconv,可以从同一下载位置获得。

LZ4

需要支持LZ4压缩方法来压缩表格数据。二进制文件和源代码可以从https://github.com/lz4/lz4/releases (opens new window).

OpenSSL

需要SSL支持。二进制文件可以从https://slproweb.com/products/Win32OpenSSL.html (opens new window)或者来源于https://www.openssl.org (opens new window).

ossp uuid

UUID-OSSP支持所需(仅限contrib)。源代码可以从http://www.ossp.org/pkg/lib/uuid/ (opens new window).

Python

构建PL/Python所需。二进制文件可以从https://www.python.org (opens new window).

兹利布

pg中的压缩支撑所需_转储和pg_恢复二进制文件可以从https://www.zlib.net (opens new window).

# 18.1.2.64位Windows的特殊注意事项

PostgreSQL将只在64位Windows上构建x64体系结构,不支持安腾处理器。

不支持在同一生成树中混合32位和64位版本。构建系统将自动检测它是否在32位或64位环境中运行,并相应地构建PostgreSQL。因此,在生成之前启动正确的命令提示符非常重要。

要使用python或OpenSSL等服务器端第三方库,请使用以下库:必须也可以是64位。不支持在64位服务器中加载32位库。PostgreSQL支持的几个第三方库可能只有32位版本,在这种情况下,它们不能与64位PostgreSQL一起使用。

# 18.1.3.建筑

要在版本配置(默认)中构建所有PostgreSQL,请运行以下命令:

build

要在调试配置中构建所有PostgreSQL,请运行以下命令:

build DEBUG

要仅构建单个项目,例如psql,请运行以下命令:

build psql
build DEBUG psql

要将默认生成配置更改为调试,请在buildenv。pl文件:

$ENV{CONFIG}="Debug";

也可以从VisualStudioGUI内部构建。在这种情况下,您需要运行:

perl mkvcbuild.pl

从命令提示下,然后打开生成的pgsql。sln(在源代码树的根目录中)在Visual Studio中。

# 18.1.4.清洁和安装

大多数情况下,VisualStudio中的自动依赖项跟踪将处理更改的文件。但是如果有很大的变化,你可能需要清理安装。为此,只需运行清洁的球棒命令,该命令将自动清除所有生成的文件。您还可以使用*距离参数,在这种情况下,它的行为如下*打扫卫生**并删除flex/bison输出文件。

默认情况下,所有文件都写入调试释放目录。要使用标准布局安装这些文件,并生成初始化和使用数据库所需的文件,请运行以下命令:

install c:\destination\directory

如果只想安装客户端应用程序和接口库,则可以使用以下命令:

install c:\destination\directory client

# 18.1.5.运行回归测试

要运行回归测试,请确保已首先完成所有必需部件的构建。此外,请确保加载系统所有部分所需的DLL(例如用于过程语言的Perl和Python DLL)存在于系统路径中。如果没有,请通过buildenv。pl文件要运行测试,请从src\tools\msvc目录:

vcregress check
vcregress installcheck
vcregress plcheck
vcregress contribcheck
vcregress modulescheck
vcregress ecpgcheck
vcregress isolationcheck
vcregress bincheck
vcregress recoverycheck
vcregress upgradecheck

要更改所使用的计划(默认为并行),请将其附加到命令行,如下所示:

vcregress check serial

有关回归测试的更多信息,请参阅第33章.

在客户端程序上运行回归测试回归宾切克,或在恢复测试中回归恢复检查,需要安装额外的Perl模块:

IPC::运行

在撰写本文时,IPC::运行不包括在ActiveState Perl安装中,也不包括在ActiveState Perl包管理器(PPM)库中。要安装,请下载IPC运行-<version>。焦油广州来自CPAN的源文件,网址:https://metacpan.org/release/IPC-Run (opens new window),并解压缩。编辑buildenv。pl文件,并添加一个PERL5LIB变量以指向解放党从提取的存档文件中删除子目录。例如:

$ENV{PERL5LIB}=$ENV{PERL5LIB} . ';c:\IPC-Run-0.94\lib';

TAP测试使用回归支持环境变量验证测试,使用给定的名称模式自动展开,以及展示旗帜。在运行之前,可以在Windows终端上进行设置回归:

set PROVE_FLAGS=--timer --jobs 2
set PROVE_TESTS=t/020*.pl t/010*.pl

也可以在中设置这些参数buildenv。pl:

$ENV{PROVE_FLAGS}='--timer --jobs 2'
$ENV{PROVE_TESTS}='t/020*.pl t/010*.pl'

一些TAP测试依赖于一组外部命令,这些命令可以选择性地触发与它们相关的测试。这些变量中的每一个都可以在中设置或取消设置buildenv。pl:

GZIP_项目

gzip命令的路径。默认值是gzip,这将是在中找到的命令路径.

LZ4

lz4命令的路径。默认值是lz4,这将是在中找到的命令路径.

焦油

指向tar命令的路径。默认值是焦油,这将是在中找到的命令路径.