make-w32
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: mingw make problem


From: Eli Zaretskii
Subject: Re: mingw make problem
Date: Fri, 18 Aug 2006 16:01:36 +0300

> Date: Fri, 18 Aug 2006 08:40:55 -0400
> From: "William A. Hoffman" <address@hidden>
> Cc: address@hidden
> 
> Strange, If you look at the debug output I sent there is no shell redirection
> going on, but sh is being used.

Redirection is only one of the reasons.  Quotes and shell wildcards
are others.

> So, it is the quotes that are causing it to use the shell.

Yes, see above.  It's all expected and by design.

> There are some really odd rules to CreateProcess.  I think
> CreateProcess is actually merging the strings and passing them to
> the process.

Yes; this is clearly documented in the Microsoft docs.

> However, many makes do not like quoted depend targets.
> 
> a: "/some/file"

You need to quote the target in the command, like this:

  a: /some/file
        frobnicate "$<"

> So, CMake generates the \ escaped spaces uniformly.

Escaping by \ is not very portable.  Different flavors of Make support
it in different ways, and so do different shells and different
wildcard expansion routines in library startup code linked into
programs.

> I suppose we could
> change it to do quotes for command launching and \ escapes for targets, but
> then I would need to know if cmd or sh was going to be used when I generate
> the makefile.

No, you don't need to do that, just add the quotes in the command
lines, as I show above.

> >> MSYS make would be a good choice, but it has the bad habit of
> >> changing command line options of dos programs into full paths to the
> >> msys mount point.
> >
> >I think we already agreed that the best choice (for you) is to add
> >support for DOS file names to the Cygwin Make 
> 
> Sure, but you wanted me to report the issue.  :) 

The above comment was in response to your saying that MSYS is the way
out, and only to that.

> BTW, this is the most current binary from mingw.
> $ ./make.exe --version
> GNU Make 3.80

No, they now have 3.81, I looked yesterday.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]