[cmake-developers] -GNinja on Windows

Peter Kümmel syntheticpp at gmx.net
Wed Jun 6 15:14:19 EDT 2012


On 06.06.2012 20:21, Claus Klein wrote:
> Hi Peter,
>
> Today I have tried to work with ninja on MSYS.
>
> I have a view questions:
>
> 1. Is cmake build on MSYS or build on windows when you test with it the ninja generator?
> I tried the windows version, but it fails, ....

Hi Claus,

I only build with MSVC or mingw without MSYS. I never tried "MinGW Makefile" generator on msys,
does this work?

>
> 2. MSYS has a bash sh program, why is cmd /c used at a unix like environment?
> It is not fast to start a a shell the old stupid dos cmd shell again and to have the cmdline length problems again!

ATM it ignores MSYS: running cmake.exe == using cmd.exe

But after the big mingw failure today, msys is maybe simpler than plain win32 mingw.

>
> 3. The gcc, ar, and other binutils I found are quite actual and the @response file options are known
> But it is a bash, not command, so only posix path separator must be used, '\' and spaces must be quoted!
>
> IMO cmake, at least the ninja generator should respect this, than it works.

Overall I come to the conclusion, that cross-compiling with ninja and mingw on Linux
is better supported than using mingw and ninja on Windows.

>
>
> An other question about dependancy generation on Windows and MSYS:
>
> I found the Makefile Generator creates dep files on MSYS, but the gcc can do it by the way? He, wait?
> It is it an open issue for the Nina generator to not create depend files on Windows with cl when cmake know to do it?

With gcc you can produce dependency files, also on Windows. The problem is to use cl as single source
for dependency files. cl supports /ShowIncludes but it has not a dependency file generation feature like gcc.
But your idea to use gcc to generate dependencies even when the "real work" is done by cl is
interesting. There are already several attempts discussed on the ninja list (or there are pull requests)
to fix this issue, but the idea to mix a msvc and a mingw build is new. Would be a challenge.


>
> ...
>
> C:\Wascana\mingw\bin\ar.exe:
> CMakeFilescmTryCompileExec2945905931.dirtestCCompiler.c.obj: No such file

Feeding MSYS with back-slashes will not work, no surprise.

> or directory
>
> ninja: build stopped: subcommand failed.
>

Cheers,
Peter



More information about the cmake-developers mailing list