Invalid character escape \P error when path to compiler is passed from VS2019
The compiler path passed to CMake is not converted to forward slashes: set(CMAKE_C_COMPILER "C:\Program Files\LLVM/bin/clang-cl.exe")
In VS2019's CMakeSettings.json I have defined the following environment to configure a Clang compiler, which uses an environment variable to the location of the LLVM installation.
{
"environment": "clang_cl_x64",
"namespace": "clang_cl_x64",
"ClangPath": "\"${env.LLVM_ROOT}/bin/clang-cl.exe\"",
"ClangFlags": "\"-m64\"",
"CMake_C_Compiler": "-DCMAKE_C_COMPILER=${clang_cl_x64.ClangPath}",
"CMake_CXX_Compiler": "-DCMAKE_CXX_COMPILER=${clang_cl_x64.ClangPath}",
"CMakeCommandArgs": "${clang_cl_x64.CMake_C_Compiler} ${clang_cl_x64.CMake_CXX_Compiler}"
},
Which then is used as a build configuration:
{
"name": "Ninja-Clang-x64-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [ "clang_cl_x64", "msvc_x64", "root_paths" ],
"buildRoot": "${root_paths.buildRoot}",
"installRoot": "${root_paths.installRoot}",
"cmakeCommandArgs": "${clang_cl_x64.CMakeCommandArgs}",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"variables": [
{
"name": "option_EngineLibraryAs_SHARED",
"type": "BOOL",
"value": "YES"
}
]
},
This causes the following error:
1> [CMake] CMake Error at Z:/zHGHz/GunBox/__build-output/Ninja-Clang-x64-Debug/CMakeFiles/3.15.19101501-MSVC_2/CMakeCCompiler.cmake:1 (set):
1> [CMake] Syntax error in cmake code at
1> [CMake]
1> [CMake] Z:/zHGHz/GunBox/__build-output/Ninja-Clang-x64-Debug/CMakeFiles/3.15.19101501-MSVC_2/CMakeCCompiler.cmake:1
1> [CMake]
1> [CMake] when parsing string
1> [CMake]
1> [CMake] C:\Program Files\LLVM/bin/clang-cl.exe
1> [CMake]
1> [CMake] Invalid character escape '\P'.
1> [CMake] Call Stack (most recent call first):
1> [CMake] CMakeLists.txt:7 (project)
1> [CMake] -- Configuring incomplete, errors occurred!
In CMakeCCompiler.cmake:1:
set(CMAKE_C_COMPILER "C:\Program Files\LLVM/bin/clang-cl.exe")
set(CMAKE_C_COMPILER_ARG1 "")
set(CMAKE_C_COMPILER_ID "Clang")
set(CMAKE_C_COMPILER_VERSION "9.0.0")
set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
set(CMAKE_C_COMPILER_WRAPPER "")
set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "")
set(CMAKE_C_COMPILE_FEATURES "")
set(CMAKE_C90_COMPILE_FEATURES "")
set(CMAKE_C99_COMPILE_FEATURES "")
set(CMAKE_C11_COMPILE_FEATURES "")
set(CMAKE_C_PLATFORM_ID "Windows")
set(CMAKE_C_SIMULATE_ID "MSVC")
set(CMAKE_C_COMPILER_FRONTEND_VARIANT "MSVC")
set(CMAKE_C_SIMULATE_VERSION "19.24")
set(CMAKE_C_COMPILER_ARCHITECTURE_ID x64)
set(MSVC_C_ARCHITECTURE_ID x64)
set(CMAKE_AR "")
set(CMAKE_C_COMPILER_AR "C:/Program Files/LLVM/bin/llvm-ar.exe")
set(CMAKE_RANLIB "")
set(CMAKE_C_COMPILER_RANLIB "C:/Program Files/LLVM/bin/llvm-ranlib.exe")
set(CMAKE_LINKER "C:/Program Files (x86)/Microsoft Visual Studio/2019/Preview/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/link.exe")
set(CMAKE_MT "C:/Program Files (x86)/Windows Kits/10/bin/10.0.17763.0/x64/mt.exe")
set(CMAKE_COMPILER_IS_GNUCC )
set(CMAKE_C_COMPILER_LOADED 1)
set(CMAKE_C_COMPILER_WORKS )
set(CMAKE_C_ABI_COMPILED )
set(CMAKE_COMPILER_IS_MINGW )
set(CMAKE_COMPILER_IS_CYGWIN )
if(CMAKE_COMPILER_IS_CYGWIN)
set(CYGWIN 1)
set(UNIX 1)
endif()
set(CMAKE_C_COMPILER_ENV_VAR "CC")
if(CMAKE_COMPILER_IS_MINGW)
set(MINGW 1)
endif()
set(CMAKE_C_COMPILER_ID_RUN 1)
set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
set(CMAKE_C_LINKER_PREFERENCE 10)
# Save compiler ABI information.
set(CMAKE_C_SIZEOF_DATA_PTR "")
set(CMAKE_C_COMPILER_ABI "")
set(CMAKE_C_LIBRARY_ARCHITECTURE "")
if(CMAKE_C_SIZEOF_DATA_PTR)
set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
endif()
if(CMAKE_C_COMPILER_ABI)
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
endif()
if(CMAKE_C_LIBRARY_ARCHITECTURE)
set(CMAKE_LIBRARY_ARCHITECTURE "")
endif()
set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "Note: including file: ")
if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
endif()
set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "")
set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "")
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "")
set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
My issue seems similar to this issue: #19503 (closed)