On 1/31/2012 2:33 PM, Peter Kümmel wrote:
On 31.01.2012 04:55, Bill Hoffman wrote:

- Paths like 'c:\' - Ninja now supports colon escaping "c:" -> "c$:"
Is there a single place where the escaping could be done?

Can we use Posix paths in the windows ninja generator instead of windows
paths? I am guessing ninja would be happier with them. So, c:/, as
for the :, there should be a way to escape that depends on the
generator. I know the makefile ones have a place.


We can't use Posix paths. Ninja assumes ready-to-use command lines,
on Windows this means backslashes in the generated ninja file.
'\' is not special character, only '$' is used for escaping.

Therefore the question, if there is a single place where
all the slashes could be replaced by backslashes before we write
them down to the ninja file.


All of that is done in the cmLocalGenerator for the NMake and Jom generators that use windows paths:


  enum RelativeRoot { NONE, FULL, HOME, START, HOME_OUTPUT, START_OUTPUT };
  enum OutputFormat { UNCHANGED, MAKEFILE, SHELL, RESPONSE };
std::string ConvertToOutputFormat(const char* source, OutputFormat output);
  std::string Convert(const char* remote, RelativeRoot local,
                      OutputFormat output = UNCHANGED,
                      bool optional = false);
  std::string Convert(RelativeRoot remote, const char* local,
                      OutputFormat output = UNCHANGED,
                      bool optional = false);


So, you want to make sure Convert is used, and it should do the right thing. That eventually calls:


std::string cmSystemTools::ConvertToOutputPath(const char* path)

Which will use windows paths, unless s_ForceUnixPaths is set (used by unix makefile generator on windows.)

-Bill







--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to