Search code examples
windowscmakemsys

CMake convert unix to windows path


I'm trying to convert a unix style MSYS path such as /c/my/path/to/a/folder to a Windows path, or something that CMake would understand, e.g C:/my/path/to/a/folder. I'd like it to work on a path that is already correct.

Is there any proper way to do it ?

Note : Please do not mention cygwin's cygpath.

Edit: file(TO_CMAKE_PATH mypath result) is not working


Solution

  • There's no built-in CMake functionality for this, but you can write a function/macro to do it:

    macro(msys_to_cmake_path MsysPath ResultingPath)
      string(REGEX REPLACE "^/([a-zA-Z])/" "\\1:/" ${ResultingPath} "${MsysPath}")
    endmacro()
    
    set(mypath "/c/my/path/to/a/folder")
    msys_to_cmake_path(${mypath} result)
    
    message("Converted \"${mypath}\" to \"${result}\".")
    

    Having said that, I agree with Antonio's comment in that it seems unusual to need this in the first place.