PostgreSQL peut être construit en utilisant la suite de compilation Visual C++ de Microsoft. Ces compilateurs peuvent être soit Visual Studio, soit Visual Studio Express soit certaines versions du Microsoft Windows SDK. Si vous n'avez pas déjà un environnement Visual Studio configuré, le plus simple est d'utiliser les compilateurs disponibles dans Visual Studio 2022 ou ceux fournis dans le Windows SDK 10, qui sont tous disponibles en téléchargement libre sur le site de Microsoft.
Les constructions 32 bits et 64 bits sont possible avec la suite Microsoft Compiler. Les constructions 32 bits sont possibles avec Visual Studio 2005 jusqu'à Visual Studio 2022, ainsi que les versions autonomes Windows SDK, de la version 6.0 à la version 10. Les constructions 64 bits sont supportées avec Microsoft Windows SDK, de la version 6.0a à la version 10, ou Visual Studio 2008 et les versions ultérieures. La compilation est supportée depuis Windows XP et Windows Server 2003 lors de la construction avec Visual Studio 2005 et jusqu'à Visual Studio 2013. Construire avec Visual Studio 2015 est supportée depuis Windows Vista et Windows Server 2008. Construire avec Visual Studio 2017 jusqu'à Visual Studio 2022 est supportée jusqu'à la Windows 7 SP1 et Windows Server 2008 R2 SP1.
   Les outils pour compiler avec Visual C++ ou
   Platform SDK sont dans le répertoire
   src/tools/msvc. Lors de la construction, assurez-vous
   qu'il n'y a pas d'outils provenant de MinGW ou
   Cygwin présents dans le chemin des applications
   du système. De plus, assurez-vous que vous avez tous les outils Visual C++
   requis disponibles dans le chemin des applications (variable
   d'environnement PATH). Dans Visual
    Studio, lancez le Visual Studio Command
    Prompt. Si vous souhaitez construire une version 64 bits,
   vous devez utiliser une version 64 bits de la commande, et vice-versa. Dans
   Microsoft Windows SDK, lancez la commande shell
   CMD listé dans le menu SDK du menu de démarrage.
   Dans les versions récentes du SDK, vous pouvez changer l'architecture CPU
   ciblée, le type de construction et le système cible en utilisant la
   commande setenv, par exemple setenv /x86
    /release /xp pour cibler Windows XP ou supérieur avec une
   construction 32 bits. Voir /? pour les autres options de
   setenv. Toutes les commandes doivent être exécutées du
   répertoire src\tools\msvc.
  
   Avant de lancer la construction, vous pouvez créer le fichier
   config.pl pour y modifier toutes les options de
   configuration nécessaires, ainsi que les chemins utilisés par les
   bibliothèques de tierces parties. La configuration complète est déterminée
   tout d'abord en lisant et en analysant le fichier
   config_default.pl, puis en appliquant les
   modifications provenant du fichier config.pl. Par
   exemple, pour indiquer l'emplacement de votre installation de
   Python, placez la ligne suivante dans
   config.pl :
   
   $config->{python} = 'c:\python26';
   
   Vous avez seulement besoin de spécifier les paramètres qui sont différents
   de la configuration par défaut, ce qui est à faire dans le fichier
   config_default.pl.
  
   Si vous avez besoin de configurer d'autres variables d'environnement, créez
   un fichier appelé buildenv.pl et placez-y les
   commandes souhaitées. Par exemple, pour ajouter le chemin vers bison s'il
   ne se trouve pas dans le chemin, créez un fichier contenant :
   
   $ENV{PATH}=$ENV{PATH} . ';c:\chemin\vers\bison\bin';
   
Pour passer des arguments en ligne de commande supplémentaires à la commande de compilation de Visual Studio (msbuild or vcbuild) :
$ENV{MSBFLAGS}="/m";
   
    Les outils supplémentaires suivants sont requis pour construire
    PostgreSQL. Utilisez le fichier
    config.pl pour indiquer les répertoires où se
    trouvent les bibliothèques.
    
Si votre environnement de compilation ne contient pas une version supportée du Microsoft Windows SDK, il est recommandé de mettre à jour avec la dernière version supportée (actuellement la version 10), téléchargeable sur le site de Microsoft.
Vous devez toujours inclure la partie Windows Headers and Libraries du SDK. Si vous installez un Windows SDK incluant les compilateurs (Visual C++ Compilers), vous n'avez pas de Visual Studio. Notez que la version 8.0a du Windows SDK ne contient plus d'environnement complet de compilation en ligne de commande.
ActiveState Perl est requis pour exécuter les scripts de construction. La commande Perl de MinGW et de Cygwin ne fonctionnera pas. Elle doit aussi être présente dans le chemin (PATH). Les binaires de cet outil sont téléchargeables à partir du site officiel (la version 5.8.3 ou ultérieure est requise, la distribution standard libre est suffisante).
    Les produits suivants ne sont pas nécessaires pour commencer, mais sont
    requis pour installer la distribution complète. Utilisez le fichier
    config.pl pour indiquer les répertoires où sont
    placées les bibliothèques.
    
Requis pour construire PL/Tcl (la version 8.4 est requise, la distribution standard libre est suffisante).
Bison et Flex sont requis pour construire à partir de Git, mais ne le sont pas pour construire à partir d'une version distribuée. Seul Bison 1.875 ou les versions 2.2 et ultérieures fonctionneront. Flex doit être en version 2.5.31 ou supérieure.
Bison et Flex sont inclus dans la suite d'outils msys, disponible à partir de son site officiel et faisant partie de la suite de compilation MinGW.
        Vous aurez besoin d'ajouter le répertoire contenant
        flex.exe et bison.exe à la
        variable d'environnement PATH dans buildenv.pl
        sauf s'ils y sont déjà. Dans le cas de MinGW, le répertoire est le
        sous-répertoire \msys\1.0\bin de votre répertoire
        d'installation de MinGW.
       
         La distribution Bison de GnuWin32 a apparemment un bug qui cause des
         disfonctionnements de Bison lorsqu'il est installé dans un répertoire
         dont le nom contient des espaces, tels que l'emplacement par défaut
         dans les installations en anglais : C:\Program
          Files\GnuWin32. Installez donc plutôt dans
         C:\GnuWin32 ou utilisez le chemin court NTFS de
         GnuWin32 dans votre variable d'environnement PATH (par exemple
         C:\PROGRA~1\GnuWin32).
        
         Les binaires obsolètes winflex distribués sur le site FTP de
         PostgreSQL et référencés dans les anciennes documentations échoueront
         avec le message « flex: fatal internal error, exec
          failed » sur des serveurs Windows 64 bits. Utilisez Flex à
         partir du paquet MSYS.
        
Diff est nécessaire pour exécuter les tests de régression, et peut être téléchargé à partir de de la page du projet gnuwin32 du site sourceforge.net.
Gettext est requis pour construire le support des langues (NLS), et peut être téléchargé à partir de la page du projet gnuwin32 du site sourceforge.net. Notez que les binaires, dépendances et fichiers d'en-tête sont tous nécessaires.
Requis pour le support de l'authentification GSSAPI. MIT Kerberos est téléchargeable sur le site du MIT.
Requis pour le support du XML. Les binaires sont disponibles sur le site zlatkovic.com et les sources sur le site xmlsoft.org. Notez que libxml2 nécessite iconv, qui est disponible sur le même site web.
Requis pour le support de SSL. Les binaires peuvent être téléchargés à partir du site slproweb.com alors que les sources sont disponibles sur le site openssl.org.
Requis pour le support d'UUID-OSSP (seulement en contrib). Les sources peuvent être récupérées sur le site ossp.org.
Requis pour la construction de PL/Python. Les binaires sont téléchargeables sur le site officiel du langage Python.
Requis pour le support de la compression dans pg_dump et pg_restore. Les binaires sont disponibles à partir du site officiel.
PostgreSQL ne peut être compilé pour l'architecture x64 que sur Windows 64 bit. De plus, il n'y a pas de support pour les processeurs Itanium.
Mixer des versions 32 bits et des versions 64 bits dans le même répertoire de construction n'est pas supporté. Le système de compilation détecte automatiquement si l'environnement est 32 bits ou 64 bits, et construit PostgreSQL en accord. Pour cette raison, il est important de commencer avec la bonne invite de commande avant de lancer la compilation.
Pour utiliser une bibliothèque de tierce partie côté serveur comme Python ou OpenSSL, cette bibliothèque doit aussi être en 64 bits. Il n'y a pas de support pour le chargement d'une bibliothèque 32 bits sur un serveur 64 bits. Plusieurs bibliothèques de tierce partie que PostgreSQL supporte ne sont disponibles qu'en version 32 bits, auquel cas elles ne peuvent pas être utilisées avec un serveur PostgreSQL 64 bits.
Pour construire tout PostgreSQL dans la configuration par défaut, exécutez la commande :
buildPour construire tout PostgreSQL dans la configuration de débogage, exécutez la commande :
build DEBUGPour construire un seul projet, par exemple psql, exécutez l'une des deux commandes ci-dessous, suivant que vous souhaitez la configuration par défaut ou la configuration de débogage :
     build psql
     build DEBUG psql
    
    Pour modifier la configuration de construction par défaut, placez ce qui
    suit dans le fichier buildenv.pl :
    
    
Il est aussi possible de construire à partir de l'interface de Visual Studio. Dans ce cas, vous devez exécuter :
perl mkvcbuild.pl
    à partir de l'invite, puis ouvrir le fichier
    pgsql.sln généré (dans le répertoire racine des
    sources) dans Visual Studio.
   
    La plupart du temps, la récupération automatique des dépendances dans
    Visual Studio prendra en charge les fichiers modifiés. Mais, s'il y a eu
    trop de modifications, vous pouvez avoir besoin de nettoyer
    l'installation. Pour cela, exécutez simplement la commande
    clean.bat, qui nettoiera automatiquement les fichiers
    générés. Vous pouvez aussi l'exécuter avec le paramètre
    dist, auquel cas il se comporte comme
    make distclean et supprime les fichiers flex/bison
    en sortie.
   
    Par défaut, tous les fichiers sont écrits dans un sous-répertoire de
    debug ou release. Pour installer
    ces fichiers en utilisant les emplacements standards et pour générer aussi
    les fichiers requis pour initialiser et utiliser la base de données,
    exécutez la commande :
    
install c:\destination\directory
Si vous voulez seulement installer les applications clientes et les bibliothèques, vous pouvez utiliser ces commandes :
install c:\destination\directory client
    Pour exécuter les tests de régression, assurez-vous que vous avez terminé
    la construction de toutes les parties requises. Ensuite, assurez-vous que
    les DLL nécessaires au chargement de toutes les parties du système (comme
    les DLL Perl et Python pour les langages de procédure) sont présentes dans
    le chemin système. Dans le cas contraire, configurez-les dans le fichier
    buildenv.pl. Pour lancer les tests, exécutez une des
    commandes suivantes à partir du répertoire
    src\tools\msvc :
    
     vcregress check
     vcregress installcheck
     vcregress plcheck
     vcregress contribcheck
     vcregress ecpgcheck
     vcregress isolationcheck
     vcregress bincheck
     vcregress recoverycheck
     vcregress upgradecheck
    Pour modifier la planification utilisée (en parallèle par défaut), ajoutez-la à la ligne de commande, comme :
vcregress check serialPour plus d'informations sur les tests de régression, voir Chapitre 32.
    Exécuter les tests de régression sur les programmes clients, avec
    vcregress bincheck, ou sur les tests de restauration,
    avec vcregress recoverycheck,
    nécessite l'installation d'un module Perl supplémentaire :
    
        Lors de l'écriture de cette partie, IPC::Run
        n'était pas inclus dans l'installation de ActiveState Perl, pas plus
        que dans la bibliothèque ActiveState Perl Package Manager (PPM). Pour
        l'installer, téléchargez l'archive source
        IPC-Run-<version>.tar.gz à partir du site CPAN, et
        déballez-la. Modifiez le fichier buildenv.pl en
        ajoutant une variable PERL5LIB pointant vers le sous-répertoire
        lib des fichiers extraits de l'archive. Par
        exemple :
$ENV{PERL5LIB}=$ENV{PERL5LIB} . ';c:\IPC-Run-0.94\lib';
   Certains des tests TAP dépendent d'un ensemble de commandes externes qui
   pourraient, en option, déclencher des tests de trigger en relation.  Chacune
   de ces variables peuvent être initialisées ou désinitialisées dans le fichier
   buildenv.pl :
   
GZIP_PROGRAM
      Chemin vers une commande gzip. La valeur par
      défaut est gzip, qui serait la commande trouvée dans le
      PATH.
     
TAR
      Chemin vers une commande tar. La valeur par
      défaut est tar, qui serait la commande trouvée dans le
      PATH.
     
Construire la documentation PostgreSQL au format HTML nécessite plusieurs outils et fichiers. Créez un répertoire racine pour tous ces fichiers et stockez-les dans des sous-répertoires conformément à la liste ci-dessous.
        À télécharger à partir de la page
        du projet openjade sur le site sourceforge.net et à
        décompresser dans le sous-répertoire
        openjade-1.3.1.
       
        À télécharger à partir de site oasis-open.org
        et à décompresser dans le sous-répertoire
        docbook.
       
        À télécharger à partir du site
        oasis-open.org et à décompresser dans le sous-répertoire
        docbook.
       
    Modifiez le fichier buildenv.pl et ajoutez une
    variable pour l'emplacement du répertoire racine, par exemple :
    
$ENV{DOCROOT}='c:\docbook';
    Pour construire la documentation, exécutez la commande
    builddoc.bat. Notez que ceci exécutera la
    construction une deuxième fois, pour générer les index. Les fichiers HTML
    générés seront dans le répertoire doc\src\sgml.