[CMake] Unicode path wrecks havoc with VS2013 generator

Nagy-Egri Máté Ferenc nagymatef at freemail.hu
Fri Nov 8 04:48:35 EST 2013


Hi!


I have the following issue, which I do not know whether it is an issue of CMake or Visual Studio. When I try to generate a Visual Studio project under a path that contains unicode characters, VS fails to compile the simple test file and thus CMake terminates project generation. Visual Studio does have some issues with projects under unicode paths, but generally things work. (For eg. the C++AMP call tree generator breaks, therefore no C++AMP project can be built in such paths) I develop all my applications in my Skydrive folder which is under the Users folder, and since my name holds unicode characters, I have no control over mw home folder under Win 8 if I have a Live-ID user in the OS. This is what happens:


C:\Users\MátéFerenc\SkyDrive\Develop\Active\GridRipper\VS2013>cmake -G "Visual Studio 12" -D USE_OPENCL:BOOL=ON ../
-- The C compiler identification is MSVC 18.0.21005.1
-- The CXX compiler identification is MSVC 18.0.21005.1
-- Check for working C compiler using: Visual Studio 12
-- Check for working C compiler using: Visual Studio 12 -- broken
CMake Error at C:/Kellekek/CMake 2.8/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:61 (message):
  The C compiler "C:/Kellekek/Microsoft Visual Studio 12.0/VC/bin/cl.exe" is
  not able to compile a simple test program.


  It fails with the following output:


   Change Dir: C:/Users/MßtÚFerenc/SkyDrive/Develop/Active/GridRipper/VS2013/CMakeFiles/CMakeTmp




  Run Build Command:C:\PROGRA~2\MSBuild\12.0\Bin\MSBuild.exe
  cmTryCompileExec2625635362.vcxproj /p:Configuration=Debug
  /p:VisualStudioVersion=12.0


  Microsoft (R) Build Engine version 12.0.21005.1


  [Microsoft .NET Framework, version 4.0.30319.34003]


  Copyright (C) Microsoft Corporation.  All rights reserved.




  Build started 2013.11.08.  11:07:49.


  Project
  "C:\Users\MátéFerenc\SkyDrive\Develop\Active\GridRipper\VS2013\CMakeFiles\CMakeTmp\cmTryCompileExec2625635362.vcxproj


  on node 1 (default targets).



  C:\Users\MátéFerenc\SkyDrive\Develop\Active\GridRipper\VS2013\CMakeFiles\CMakeTmp\cmTryCompileExec2625635362.vcxproj(
0,83):
  error MSB4025: The project file could not be loaded.  Érvénytelen karakter
  az adott kódolásban.  Sor: 60, pozíció: 83.


  Done Building Project
  "C:\Users\MátéFerenc\SkyDrive\Develop\Active\GridRipper\VS2013\CMakeFiles\CMakeTmp\cmTryCompileExec2625635362.vcxproj


  (default targets) -- FAILED.




  Build FAILED.





  "C:\Users\MátéFerenc\SkyDrive\Develop\Active\GridRipper\VS2013\CMakeFiles\CMakeTmp\cmTryCompileExec2625635362.vcxproj


  (default target) (1) ->


    C:\Users\MátéFerenc\SkyDrive\Develop\Active\GridRipper\VS2013\CMakeFiles\CMakeTmp\cmTryCompileExec2625635362.vcxpro
(60,83): error MSB4025: The project file could not be loaded. Érvénytelen karakter az adott kódolásban. Sor: 60, pozíci
: 83.




      0 Warning(s)
      1 Error(s)




  Time Elapsed 00:00:00.02






  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:20 (project)



-- Configuring incomplete, errors occurred!
See also "C:/Users/MßtÚFerenc/SkyDrive/Develop/Active/GridRipper/VS2013/CMakeFiles/CMakeOutput.log".
See also "C:/Users/MßtÚFerenc/SkyDrive/Develop/Active/GridRipper/VS2013/CMakeFiles/CMakeError.log".


C:\Users\MátéFerenc\SkyDrive\Develop\Active\GridRipper\VS2013>



The hungarian part of the string found in the error message “project file could not be loaded. Érvénytelen karakter az adott kódolásban. Sor: 60, pozíci : 83.” means invalid character in the given encoding Line 60, position 83


If I use the NMake generator, everything works fine. Output is:


C:\Users\MátéFerenc\SkyDrive\Develop\Active\GridRipper\VC++>cmake -G "NMake Makefiles" -D USE_OPENCL:BOOL=ON ../
-- The C compiler identification is MSVC 18.0.21005.1
-- The CXX compiler identification is MSVC 18.0.21005.1
-- Check for working C compiler: C:/Kellekek/Microsoft Visual Studio 12.0/VC/bin/amd64/cl.exe
-- Check for working C compiler: C:/Kellekek/Microsoft Visual Studio 12.0/VC/bin/amd64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: C:/Kellekek/Microsoft Visual Studio 12.0/VC/bin/amd64/cl.exe
-- Check for working CXX compiler: C:/Kellekek/Microsoft Visual Studio 12.0/VC/bin/amd64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found OpenCL: C:/Program Files (x86)/AMD APP (found version "1.2")
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/MßtÚFerenc/SkyDrive/Develop/Active/GridRipper/VC++


Is this the right place to post this issue? Visual Studio in most cases works under unicode paths, but in this case VS seems to complain about mal-encoded characters in the project file.


Any ideas?


Máté
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20131108/34ec7310/attachment-0001.htm>


More information about the CMake mailing list