[CMake] file(TO_NATIVE_PATH ... ) and cross-compiling

Miroslav Keš miroslav.kes at gmail.com
Mon Mar 26 13:40:22 EDT 2018


I'm cross-compiling in Windows to another target system (VxWorks) but this is not so important.

I thought the idea behind the TO_NATIVE_PATH option was that the internal CMake path representation could be transformed to the system native path so that external programs that rely on the native path convention could be easily used during the build.

Either this my assumption is wrong or the CMake implementation is wrong. And the documentation should be more detailed on the exact behavior.

Mira

On 03/21/2018 09:29 PM, Stephen McDowell wrote:
> Disclaimer: I cannot speak to intent, and have never used these before.
>
> So since you’re cross compiling, when looking at the docs ( https://cmake.org/cmake/help/v3.0/command/file.html ), I *think* you can get away with using TO_CMAKE_PATH.  I do *not* know how you actually determine this, but the idea would be
>
> if (CMAKE_CROSSCOMPILING)
>   if (… host is windows …)
>       if (… target is unix …)
>         … use TO_CMAKE_PATH …
>       else()
>         … use TO_NATIVE_PATH …
>       endif()
>   else() # … host is unix …
>     if (… target is unix …)
>       … use TO_CMAKE_PATH or TO_NATIVE_PATH …
>     else() # … target is windows
>       … PROBLEM …
>     endif()
> endif()
>
> That is, I think if you are compiling *on* Windows *for* Unix, you can cheat and use TO_CMAKE_PATH to get unix style paths.  But if you are compiling *on* unix *for* Windows, I don’t know how you get it to be Windows paths.
>
> But if this does solve Windows -> Unix, you could maybe just message(FATAL_ERROR …) saying that cross compiling for Windows from Unix is not supported.  You could also take a look at the implementation of TO_NATIVE_PATH and just snag the Windows code and make your own function that converts it, maybe calling it to_windows_path() or something?
>
> I hope that is helpful, but I really don’t know if anything in the above is possible :/
>
>
>



More information about the CMake mailing list