MSVC: Add /FS flag for cl >= 18 to allow parallel compilation (#14492)
In generators such as Ninja that can run multiple "cl" processes that refer to the same compiler .pdb file (/Fd) at the same time, MSVC from Visual Studio 2013 complains: fatal error C1041: cannot open program database '.../vc120.pdb'; if multiple CL.EXE write to the same .PDB file, please use /FS According to "cl /?": /FS force to use MSPDBSRV.EXE Add the flag to compilation lines for this compiler version just after the /Fd option.
This commit is contained in:
parent
c515dc5748
commit
216afc8a81
|
@ -1,2 +1,5 @@
|
||||||
include(Platform/Windows-MSVC)
|
include(Platform/Windows-MSVC)
|
||||||
|
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 18.0)
|
||||||
|
set(_FS_C " /FS")
|
||||||
|
endif()
|
||||||
__windows_compiler_msvc(C)
|
__windows_compiler_msvc(C)
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
include(Platform/Windows-MSVC)
|
include(Platform/Windows-MSVC)
|
||||||
set(_COMPILE_CXX " /TP")
|
set(_COMPILE_CXX " /TP")
|
||||||
|
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0)
|
||||||
|
set(_FS_CXX " /FS")
|
||||||
|
endif()
|
||||||
__windows_compiler_msvc(CXX)
|
__windows_compiler_msvc(CXX)
|
||||||
|
|
|
@ -232,7 +232,7 @@ macro(__windows_compiler_msvc lang)
|
||||||
set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "<CMAKE_LINKER> /lib ${CMAKE_CL_NOLOGO} <LINK_FLAGS> /out:<TARGET> <OBJECTS> ")
|
set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "<CMAKE_LINKER> /lib ${CMAKE_CL_NOLOGO} <LINK_FLAGS> /out:<TARGET> <OBJECTS> ")
|
||||||
|
|
||||||
set(CMAKE_${lang}_COMPILE_OBJECT
|
set(CMAKE_${lang}_COMPILE_OBJECT
|
||||||
"<CMAKE_${lang}_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} <FLAGS> <DEFINES> /Fo<OBJECT> /Fd<OBJECT_DIR>/ -c <SOURCE>${CMAKE_END_TEMP_FILE}")
|
"<CMAKE_${lang}_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} <FLAGS> <DEFINES> /Fo<OBJECT> /Fd<OBJECT_DIR>/${_FS_${lang}} -c <SOURCE>${CMAKE_END_TEMP_FILE}")
|
||||||
set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE
|
set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE
|
||||||
"<CMAKE_${lang}_COMPILER> > <PREPROCESSED_SOURCE> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} <FLAGS> <DEFINES> -E <SOURCE>${CMAKE_END_TEMP_FILE}")
|
"<CMAKE_${lang}_COMPILER> > <PREPROCESSED_SOURCE> ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO}${_COMPILE_${lang}} <FLAGS> <DEFINES> -E <SOURCE>${CMAKE_END_TEMP_FILE}")
|
||||||
set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE
|
set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE
|
||||||
|
|
Loading…
Reference in New Issue