When compiling Clang with Visual Studio 2017 as a compiler, I randomly see the following errors:
7>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets(321,5): error MSB3491: Impossible d'écrire des lignes dans le fichier "LLVMDemangle.dir\Release\LLVMDemangle.tlog\LLVMDemangle.lastbuildstate". Le processus ne peut pas accéder au fichier 'F:\svn\build\NATIVE\lib\Demangle\LLVMDemangle.dir\Release\LLVMDemangle.tlog\LLVMDemangle.lastbuildstate', car il est en cours d'utilisation par un autre processus. [F:\svn\build\NATIVE\lib\Demangle\LLVMDemangle.vcxproj] 7>Génération du projet "F:\svn\build\NATIVE\lib\Demangle\LLVMDemangle.vcxproj" terminée (cibles par défaut) -- ÉCHEC.
This says basically that some target files are locked by another process.
This is caused by Clang-tablegen and LLVM-tablegen explicitly compiling at the same time, through a custom build command:
"C:\Program Files\CMake\bin\cmake.exe" --build F:/svn/build/NATIVE --target clang-tblgen --config Release
and:
"C:\Program Files\CMake\bin\cmake.exe" --build F:/svn/build/NATIVE --target llvm-tblgen --config Release
...thus compiling dependencies at the same time, in the same target folders.
This workaround simply makes Clang-tablegen depend on LLVM-tablegen which prevents this issue. Unless you can suggest a better way?
Full log:
6>------ Build started: Project: LLVM-tablegen-host, Configuration: Debug x64 ------ 7>------ Build started: Project: CLANG-tablegen-host, Configuration: Debug x64 ------ 6>Building native TableGen... 7>Building native TableGen... 6>Microsoft (R) Build Engine version 15.8.169+g1ccb72aefa pour .NET Framework 6>Copyright (C) Microsoft Corporation. Tous droits réservés. 6> 7>Microsoft (R) Build Engine version 15.8.169+g1ccb72aefa pour .NET Framework 7>Copyright (C) Microsoft Corporation. Tous droits réservés. 7> 6>La génération a démarré 2018-11-05 17:39:04. 7>La génération a démarré 2018-11-05 17:39:04. 6>Projet "F:\svn\build\NATIVE\utils\TableGen\llvm-tblgen.vcxproj" sur le noud 1 (cibles par défaut). 6>Le projet "F:\svn\build\NATIVE\utils\TableGen\llvm-tblgen.vcxproj" (1) génère "F:\svn\build\NATIVE\ZERO_CHECK.vcxproj" (2) sur le noud 1 (cibles par défaut). 7>Projet "F:\svn\build\NATIVE\tools\clang\utils\TableGen\clang-tblgen.vcxproj" sur le noud 1 (cibles par défaut). 7>Le projet "F:\svn\build\NATIVE\tools\clang\utils\TableGen\clang-tblgen.vcxproj" (1) génère "F:\svn\build\NATIVE\ZERO_CHECK.vcxproj" (2) sur le noud 1 (cibles par défaut). 6>InitializeBuildStatus: 6> Création de "x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild", car "AlwaysCreate" a été spécifié. 7>InitializeBuildStatus: 7> Mise à jour de l'horodatage "x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild". 6>CustomBuild: 6> Toutes les sorties sont à jour. 7>CustomBuild: 7> Toutes les sorties sont à jour. 7>FinalizeBuildStatus: 7> Suppression du fichier "x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild". 7> Mise à jour de l'horodatage "x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\ZERO_CHECK.lastbuildstate". 7>Génération du projet "F:\svn\build\NATIVE\ZERO_CHECK.vcxproj" terminée (cibles par défaut). 6>FinalizeBuildStatus: 6> Suppression du fichier "x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild". 6> Mise à jour de l'horodatage "x64\Release\ZERO_CHECK\ZERO_CHECK.tlog\ZERO_CHECK.lastbuildstate". 6>Génération du projet "F:\svn\build\NATIVE\ZERO_CHECK.vcxproj" terminée (cibles par défaut). 6>Le projet "F:\svn\build\NATIVE\utils\TableGen\llvm-tblgen.vcxproj" (1) génère "F:\svn\build\NATIVE\lib\Demangle\LLVMDemangle.vcxproj" (3) sur le noud 1 (cibles par défaut). 6>InitializeBuildStatus: 6> Création de "LLVMDemangle.dir\Release\LLVMDemangle.tlog\unsuccessfulbuild", car "AlwaysCreate" a été spécifié. 6>CustomBuild: 6> Toutes les sorties sont à jour. 7>Le projet "F:\svn\build\NATIVE\tools\clang\utils\TableGen\clang-tblgen.vcxproj" (1) génère "F:\svn\build\NATIVE\lib\Demangle\LLVMDemangle.vcxproj" (3) sur le noud 1 (cibles par défaut). 7>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets(321,5): error MSB3491: Impossible d'écrire des lignes dans le fichier "LLVMDemangle.dir\Release\LLVMDemangle.tlog\LLVMDemangle.lastbuildstate". Le processus ne peut pas accéder au fichier 'F:\svn\build\NATIVE\lib\Demangle\LLVMDemangle.dir\Release\LLVMDemangle.tlog\LLVMDemangle.lastbuildstate', car il est en cours d'utilisation par un autre processus. [F:\svn\build\NATIVE\lib\Demangle\LLVMDemangle.vcxproj] 7>Génération du projet "F:\svn\build\NATIVE\lib\Demangle\LLVMDemangle.vcxproj" terminée (cibles par défaut) -- ÉCHEC. 6>ClCompile: 6> Toutes les sorties sont à jour. 7>Le projet "F:\svn\build\NATIVE\tools\clang\utils\TableGen\clang-tblgen.vcxproj" (1) génère "F:\svn\build\NATIVE\lib\Support\LLVMSupport.vcxproj" (4) sur le noud 1 (cibles par défaut). 7>InitializeBuildStatus: 7> Création de "LLVMSupport.dir\Release\LLVMSupport.tlog\unsuccessfulbuild", car "AlwaysCreate" a été spécifié. 7>CustomBuild: 7> Toutes les sorties sont à jour. 7>ClCompile: 7> Toutes les sorties sont à jour. 6>Lib: 6> Toutes les sorties sont à jour. 6> LLVMDemangle.vcxproj -> F:\svn\build\NATIVE\Release\lib\LLVMDemangle.lib 6>FinalizeBuildStatus: 6> Suppression du fichier "LLVMDemangle.dir\Release\LLVMDemangle.tlog\unsuccessfulbuild". 6> Mise à jour de l'horodatage "LLVMDemangle.dir\Release\LLVMDemangle.tlog\LLVMDemangle.lastbuildstate". 6>Génération du projet "F:\svn\build\NATIVE\lib\Demangle\LLVMDemangle.vcxproj" terminée (cibles par défaut). 6>Le projet "F:\svn\build\NATIVE\utils\TableGen\llvm-tblgen.vcxproj" (1) génère "F:\svn\build\NATIVE\lib\Support\LLVMSupport.vcxproj" (4) sur le noud 1 (cibles par défaut). 6>InitializeBuildStatus: 6> Mise à jour de l'horodatage "LLVMSupport.dir\Release\LLVMSupport.tlog\unsuccessfulbuild". 6>CustomBuild: 6> Toutes les sorties sont à jour. 7> Toutes les sorties sont à jour. 7>Lib: 7> Toutes les sorties sont à jour. 7> LLVMSupport.vcxproj -> F:\svn\build\NATIVE\Release\lib\LLVMSupport.lib 7>FinalizeBuildStatus: 7> Suppression du fichier "LLVMSupport.dir\Release\LLVMSupport.tlog\unsuccessfulbuild". 7> Mise à jour de l'horodatage "LLVMSupport.dir\Release\LLVMSupport.tlog\LLVMSupport.lastbuildstate". 7>Génération du projet "F:\svn\build\NATIVE\lib\Support\LLVMSupport.vcxproj" terminée (cibles par défaut). 6>ClCompile: 6> Toutes les sorties sont à jour. 7>Le projet "F:\svn\build\NATIVE\tools\clang\utils\TableGen\clang-tblgen.vcxproj" (1) génère "F:\svn\build\NATIVE\lib\TableGen\LLVMTableGen.vcxproj" (5) sur le noud 1 (cibles par défaut). 7>InitializeBuildStatus: 7> Création de "LLVMTableGen.dir\Release\LLVMTableGen.tlog\unsuccessfulbuild", car "AlwaysCreate" a été spécifié. 7>CustomBuild: 7> Toutes les sorties sont à jour. 7>ClCompile: 7> Toutes les sorties sont à jour. 7>Lib: 7> Toutes les sorties sont à jour. 7> LLVMTableGen.vcxproj -> F:\svn\build\NATIVE\Release\lib\LLVMTableGen.lib 7>FinalizeBuildStatus: 7> Suppression du fichier "LLVMTableGen.dir\Release\LLVMTableGen.tlog\unsuccessfulbuild". 7> Mise à jour de l'horodatage "LLVMTableGen.dir\Release\LLVMTableGen.tlog\LLVMTableGen.lastbuildstate". 7>Génération du projet "F:\svn\build\NATIVE\lib\TableGen\LLVMTableGen.vcxproj" terminée (cibles par défaut). 6> Toutes les sorties sont à jour. 6>Lib: 6> Toutes les sorties sont à jour. 6> LLVMSupport.vcxproj -> F:\svn\build\NATIVE\Release\lib\LLVMSupport.lib 6>FinalizeBuildStatus: 6> Mise à jour de l'horodatage "LLVMSupport.dir\Release\LLVMSupport.tlog\LLVMSupport.lastbuildstate". 6>Génération du projet "F:\svn\build\NATIVE\lib\Support\LLVMSupport.vcxproj" terminée (cibles par défaut). 6>Le projet "F:\svn\build\NATIVE\utils\TableGen\llvm-tblgen.vcxproj" (1) génère "F:\svn\build\NATIVE\lib\TableGen\LLVMTableGen.vcxproj" (5) sur le noud 1 (cibles par défaut). 6>InitializeBuildStatus: 6> Création de "LLVMTableGen.dir\Release\LLVMTableGen.tlog\unsuccessfulbuild", car "AlwaysCreate" a été spécifié. 6>CustomBuild: 6> Toutes les sorties sont à jour. 6>ClCompile: 6> Toutes les sorties sont à jour. 6>Lib: 6> Toutes les sorties sont à jour. 6> LLVMTableGen.vcxproj -> F:\svn\build\NATIVE\Release\lib\LLVMTableGen.lib 6>FinalizeBuildStatus: 6> Suppression du fichier "LLVMTableGen.dir\Release\LLVMTableGen.tlog\unsuccessfulbuild". 6> Mise à jour de l'horodatage "LLVMTableGen.dir\Release\LLVMTableGen.tlog\LLVMTableGen.lastbuildstate". 6>Génération du projet "F:\svn\build\NATIVE\lib\TableGen\LLVMTableGen.vcxproj" terminée (cibles par défaut). 7>Le projet "F:\svn\build\NATIVE\tools\clang\utils\TableGen\clang-tblgen.vcxproj" (1) génère "F:\svn\build\NATIVE\tools\clang\utils\TableGen\obj.clang-tblgen.vcxproj" (6) sur le noud 1 (cibles par défaut). 7>InitializeBuildStatus: 7> Création de "obj.clang-tblgen.dir\Release\obj.clang-tblgen.tlog\unsuccessfulbuild", car "AlwaysCreate" a été spécifié. 7>CustomBuild: 7> Toutes les sorties sont à jour. 7>ClCompile: 7> Toutes les sorties sont à jour. 7>Lib: 7> Toutes les sorties sont à jour. 7> obj.clang-tblgen.vcxproj -> F:\svn\build\NATIVE\tools\clang\utils\TableGen\obj.clang-tblgen.dir\Release\obj.clang-tblgen.lib 7>FinalizeBuildStatus: 7> Suppression du fichier "obj.clang-tblgen.dir\Release\obj.clang-tblgen.tlog\unsuccessfulbuild". 7> Mise à jour de l'horodatage "obj.clang-tblgen.dir\Release\obj.clang-tblgen.tlog\obj.clang-tblgen.lastbuildstate". 7>Génération du projet "F:\svn\build\NATIVE\tools\clang\utils\TableGen\obj.clang-tblgen.vcxproj" terminée (cibles par défaut). 7>Génération du projet "F:\svn\build\NATIVE\tools\clang\utils\TableGen\clang-tblgen.vcxproj" terminée (cibles par défaut) -- ÉCHEC. 7> 7>ÉCHEC de la build. 7> 7>"F:\svn\build\NATIVE\tools\clang\utils\TableGen\clang-tblgen.vcxproj" (cible par défaut) (1) -> 7>"F:\svn\build\NATIVE\lib\Demangle\LLVMDemangle.vcxproj" (cible par défaut) (3) -> 7>(InitializeBuildStatus cible) -> 7>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets(321,5): error MSB3491: Impossible d'écrire des lignes dans le fichier "LLVMDemangle.dir\Release\LLVMDemangle.tlog\LLVMDemangle.lastbuildstate". Le processus ne peut pas accéder au fichier 'F:\svn\build\NATIVE\lib\Demangle\LLVMDemangle.dir\Release\LLVMDemangle.tlog\LLVMDemangle.lastbuildstate', car il est en cours d'utilisation par un autre processus. [F:\svn\build\NATIVE\lib\Demangle\LLVMDemangle.vcxproj] 7> 7> 0 Avertissement(s) 7> 1 Erreur(s) 7> 7>Temps écoulé 00:00:00.79 7>Done building project "CLANG-tablegen-host.vcxproj" -- FAILED.