[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Failure to expand macro (fwd)
From: |
Paul Smith |
Subject: |
Re: Failure to expand macro (fwd) |
Date: |
Mon, 11 Aug 2014 21:45:53 -0400 |
On Wed, 2014-07-23 at 08:37 -0700, David Highley wrote:
> Cross post from make-w32. Trying to find out if this is a known issue
> and or if there is a fix in the works.
Sorry, I was on vacation.
> Using make version 4.0-2 current version in cygwin version 1.7.31. We
> have on make process that works with make 4.0 on Linux.
One possibility is that it's a bug in the Cygwin version of GNU make,
which we don't explicitly support on this list: you'd need to ask the
Cygwin folks.
Have you tried this with GNU make 4.0 built natively on Windows? There
are a few known bugs here which are fixed in the Git version.
> The make log provides:
> cd ../CommonCode/src && "make"
> make[1]: Entering directory '/cygdrive/n/daveh/msi/CommonCode/src'
> makefile:17: *** target pattern contains no '%'. Stop.
> make[1]: Leaving directory '/cygdrive/n/daveh/msi/CommonCode/src'
> makefile:16: recipe for target 'common' failed
> make: *** [common] Error 2
>
> We are assuming that the object file list $(OBJS) is not expanding.
If you check the GNU make manual, this error message is more clearly
explained:
`missing target pattern. Stop.'
`multiple target patterns. Stop.'
`target pattern contains no `%'. Stop.'
`mixed implicit and static pattern rules. Stop.'
These are generated for malformed static pattern rules. The first
means there's no pattern in the target section of the rule; the
second means there are multiple patterns in the target section;
the third means the target doesn't contain a pattern character
(`%'); and the fourth means that all three parts of the static
pattern rule contain pattern characters (`%')-only the first two
parts should. *Note Syntax of Static Pattern Rules: Static Usage.
Given this, it seems likely that one or more of the paths in OBJS
contains a drive specifier such as C:, which the Cygwin port of make
will interpret as an extra colon.
Remember that Cygwin is a UNIX environment. You cannot use any Windows
pathname facilities in Cygwin; they will not be recognized.
If you want to use drive specifiers in your paths or makefile you MUST
use a native Windows port of GNU make, such as a MinGW build or using
MSVC or similar. You cannot mix and match UNIX and Windows pathnames if
you use Cygwin GNU make; you must convert all paths to UNIX format.
> # Create archive library.
> .NO_WINK_IN: $(LIBRARY)
> $(LIBRARY): $(OBJS) <- LINE FAILING, LINE 17 of makefile
> $(SET_E); $(MKDIR) $(LIBPATH); $(RM) $@; $(LINK)
If you add something like:
$(info $(LIBRARY): $(OBJS))
to print out what make is seeing here the problem should be obvious.
- Re: Failure to expand macro (fwd),
Paul Smith <=