Re: Make utility - views/opinions sought

PS - I am happy to use gnu make (is there a Windows 2000 pre - built

> binary?)

The Cygwin32 project has some --- you may have to install some support files to go with it, though (the Cygwin DLL for sure, Bash and GNU core utilities for best results).

There are other ports of GNU tools to Windows besides Cygwin32, e.g. the MinGW32 project, and UWin, and probably a few more. Your choice. They differ mainly in how closely they try to imitate or at least be tolerant to native conventions of the Windows platform, instead of Unix-ish traditions. Most of them will exhibit massive problems if you try to use backslashes as directory separators, e.g.

but would want to have good quality "user friendly" documentation > to go with it - any pointers?

It's almost completely impossible to guess what "user friendly" might mean to you, in this context. The GNU make documentation is available in all kinds of formats (from it's native "info" online readable format to HTML, PDF and TeX, to name just a few). Whether or not you perceive the common contents of all these versions as "friendly" is a judgement you can only make yourself.

In case of doubt there's an O'Reilly book about GNU make too, if memory serves.

Either way: it's available for free, so it should at the very least be worth giving it a try. If you want to write truly platform-independent makefiles, GNU make is about the best bet there is.

--
Hans-Bernhard Broeker (broeker@physik.rwth-aachen.de)
Even if all the snow were burnt, ashes would remain.
Reply to
Hans-Bernhard Broeker
Loading thread data ...

GNU make is pretty standard; therefore you have quite a bit of choice re documentation.

One port of the GNU tools to DOS/Windows is DJGPP:

formatting link

I've used this with no real problems.

Steve

formatting link
formatting link

Reply to
steve at fivetrees

"Robert Manktelow" wrote in news:bfo641$h1ard$ snipped-for-privacy@ID-165405.news.uni-berlin.de:

I personally just use nmake from Microsoft. Why fight city hall. It works pretty well and documentation can be found for it if you google hard enough.

--
- Mark ->
--
Reply to
Mark A. Odell

I've had good luck with the make that comes with WinAVR. I think it's the MingW version. Also comes with html documentation and a host of other utilities that almost make Windoze a reasonable development platform. I normally avoid long file names, but it handled "delaytest.*" without any problems.

I also found a gnu_mak_man.pdf on the net somewhere (I don't remember). But it's written for 3.75 beta (I'm running 3.78.1), and it's painfully slow to draw pages in Acrobat, but it might be nice for a printed copy.

The "less" that comes with Cygwin works better than the one that comes with WinAVR, though, and I still use that.

Regards,

-=Dave

--
Change is inevitable, progress is not.
Reply to
Dave Hansen

Microsoft NMAKE works OK. The documentation can be found in online help in Visual Studio

The problem with this is there's no automatic dependency searching, so you either need to maintain it manually, or use some other utility to search your source files and recurse into headers to find 'em all.

Reply to
Gary Pace

I've been using, happily, the make from the MKS toolkit for years and years. I'm still at ver 5.1a -- haven't seen any need to upgrade. Their current offerings are rather pricey but the quality is (or, at least, was) quite good.

--
Rich Webb   Norfolk, VA
Reply to
Rich Webb

Try "scons", a fantastic replacement for "make", which -- amongst other things -- automatically maintains dependencies for you:

formatting link

You may also want to look at its sibling, "cons":

formatting link

I'm not sure which one is best these days; I think scons is.

Christer Ericson Sony Computer Entertainment, Santa Monica

Reply to
Christer Ericson

Thanks to all of you for your responses. I will now go off and do some research - much appreciated.

Robert

Reply to
Robert Manktelow

A couple of people mentioned the problem of generating dependancies automatically in this thread. This not a Make feature (probably because it's language dependant) but a (pre)compiler feature. Look the doc for the -M option of gcc precompiler (pass -MM to gcc), which outputs dependancies in a form you can directly include in a Makefile.

Viel Spaß Martial

Robert Manktelow schrieb:

Reply to
Martial.Chateauvieux

I can provide some insight here. I'm the project founder/lead for SCons, so I may have some bias, but I was also the principal coder for Cons during the last few years of its active life, so I know both tools and projects well. In general, SCons is the way to go. Cons is essentially a dead project at this point, but SCons is thriving and has a growing user community.

As a descendant of the Cons design, SCons corrects many of its architectural shortcomings. SCons supports a virtual superset of the Cons functionality and then some, and is more easily extensible. See the SCons web site for a good overview of what it can do. Notably for many people, SCons supports parallel builds on all systems, including win32. Cons would be difficult to parallelize without a major architectural overhaul.

The only thing to recommend Cons these days is if you can't stomach Python, and prefer Perl to the point where you can live with a tool that will not have any active development or bug fixes done on it. SCons and Cons configuration files are Python and Perl scripts, respectively, from which you make function calls to establish dependencies, etc. Being able to specify your build configuration using a full scripting language greatly simplifies a lot of thorny build issues.

Christer, thanks for mentioning SCons and Cons; I'm glad that SCons seems to be helping you.

--SK

Reply to
Steven Knight

-M and -MM are cool, but -MMD is even better. Use it to create a makefile fragment with the dependencies for each file as you compile it, and GNU make's conditional include to get them used:

ifneq ($(wildcard *.d),) -include $(wildcard *.d) endif

(or play a similar trick by transforming the makefiles list of Sources into one of .d files...)

Or, for small and simple projects, just have GCC make dependencies in a separate run using the magic environment variable DEPENDENCIES_OUTPUT:

depend: $(RM) deps $(MAKE) DEPENDENCIES_OUTPUT=deps clean all

-include deps

This requires an explicit "make depend" from time to time, though...

--
Hans-Bernhard Broeker (broeker@physik.rwth-aachen.de)
Even if all the snow were burnt, ashes would remain.
Reply to
Hans-Bernhard Broeker

FWIW, Paul D. Smith (who took over maintenance of GNU make from Roland McGrath) describes "Advanced Auto-Dependency Generation" here:

formatting link

It uses a means similar to what you describe above, but addresses issues like having to perform the explicit "make depend".

-- Dan Henry

Reply to
Dan Henry

That will come as a big surprise to my co-workers and I who use Opus Make daily on Win 2K. Maybe it's time to get an updated version?

--Gene

Reply to
Gene S. Berkowitz

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.