Skip to content

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)

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information