Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [cdt-dev] Using nmake with managed builds

> -----Original Message-----
> From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx] On
> Behalf Of vladchuk
> Sent: October 2, 2005 1:00 PM
> To: CDT General developers list.
> Subject: Re: [cdt-dev] Using nmake with managed builds
> 
> Alex Chapiro wrote:
> 
> > I'm using cygwin make and WinXP for testing, i.e. exactly the case we
> > discussed. It successfully accepts command line longer than 16K. I
> > guess the limit is 32K (I just was lazy to test it), which is, I
> > suppose, much more than any reasonable requirement. What I'm saying,
> > there is no problem of command line length limitation with GNU make on
> > Windows environment. It still maybe exists for nmake.
> >
> > Recoskie, Chris wrote:
> >
> >> Yes, but of course YMMV depending on what make utility and OS you are
> >> using.
> >>
> >> You might find this tidbit I culled from the web interesting
> >>
> >> (http://blogs.msdn.com/oldnewthing/archive/2003/12/10/56028.aspx)
> >>
> >> What is the command line length limit?
> >> It depends on whom you ask.
> >> The maximum command line length for the CreateProcess function is 32767
> >> characters. This limitation comes from the UNICODE_STRING structure.
> >> CreateProcess is the core function for creating processes, so if you
> are
> >> talking directly to Win32, then that's the only limit you have to worry
> >> about. But if you are reaching CreateProcess by some other means, then
> >> the path you travel through may have other limits.
> >> If you are using the CMD.EXE command processor, then you are also
> >> subject to the 8192 character command line length limit imposed by
> >> CMD.EXE.
> >> If you are using the ShellExecute/Ex function, then you become subject
> >> to the INTERNET_MAX_URL_LENGTH (around 2048) command line length limit
> >> imposed by the ShellExecute/Ex functions. (If you are running on
> Windows
> >> 95, then the limit is only MAX_PATH.)
> >> While I'm here, I may as well mention another limit: The maximum size
> of
> >> your environment is 32767 characters. The size of the environment
> >> includes the all the variable names plus all the values.
> >> Okay, but what if you want to pass more than 32767 characters of
> >> information to a process? You'll have to find something other than the
> >> command line. We'll discuss some options tomorrow.
> >>
> >> ___________________________________________
> >>
> >> Chris Recoskie
> >> Software Designer
> >> Texas Instruments, Toronto
> >> http://eclipse.org/cdt
> >>
> >>
> >>
> >>
> >>
> >>> -----Original Message-----
> >>> From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx]
> >>>
> >>
> >> On
> >>
> >>
> >>> Behalf Of Alex Chapiro
> >>> Sent: Friday, September 30, 2005 2:30 PM
> >>> To: CDT General developers list.
> >>> Subject: Re: [cdt-dev] Using nmake with managed builds
> >>>
> >>> I included the following command into make file (WinXP) :
> >>>
> >>> gcc -c -D$(TTTTT) myFile.c
> >>>
> >>> where TTTTT contained 7000 characters and  launched it. File myFile.c
> >>> was successfully compiled. Are you talking about this command line?
> >>>
> >>> Recoskie, Chris wrote:
> >>>
> >>>
> >>>
> >>>> Like Mikhail says, the make utility (whether it's GNU make, nmake,
> >>>>
> >>>
> >> any
> >>
> >>
> >>>> make-alike will do) issues the commands via the OS shell.  The OS (in
> >>>> this case, windows) will generally have a limitation on the length of
> >>>>
> >>>
> >> a
> >>
> >>
> >>>> command.
> >>>>
> >>>> Make and nmake themselves don't limit the length to my knowledge, but
> >>>> when they try to invoke the command via the shell, it fails due to
> >>>>
> >>>
> >> the
> >>
> >>
> >>>> length issue.
> >>>>
> >>>> ___________________________________________
> >>>>
> >>>> Chris Recoskie
> >>>> Software Designer
> >>>> Texas Instruments, Toronto
> >>>> http://eclipse.org/cdt
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>> -----Original Message-----
> >>>>> From: cdt-dev-bounces@xxxxxxxxxxx
> >>>>>
> >>>>
> >> [mailto:cdt-dev-bounces@xxxxxxxxxxx]
> >>
> >>
> >>>>>
> >>>>
> >>>> On
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>> Behalf Of Alex Chapiro
> >>>>> Sent: Friday, September 30, 2005 1:52 PM
> >>>>> To: CDT General developers list.
> >>>>> Subject: Re: [cdt-dev] Using nmake with managed builds
> >>>>>
> >>>>> If you are talking about make command line, you can for example
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>> instead
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>> of generating long command line , create temporary make file, fill
> >>>>>
> >>>>
> >> it
> >>
> >>
> >>>>> with your command line arguments and add include Makefile at the end
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>> of
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>> it, then launch make --file=<tempFile>, then remove <tempFile>. If
> >>>>>
> >>>>
> >> you
> >>
> >>
> >>>>> are taking about length limitation of commands in make file, I don't
> >>>>> know about it. Does it really exist?
> >>>>>
> >>>>> Sennikovsky, Mikhail wrote:
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>> Cygwin make has also command length limitation, that actually has
> >>>>>>
> >>>>>
> >> to
> >>
> >>
> >>>>>>
> >>>>>
> >>>> do
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>>> with the command length limitation on windows in general.
> >>>>>> Please see the bugzilla# 72965 related to this.
> >>>>>>
> >>>>>> Thanks,
> >>>>>> Mikhail
> >>>>>>
> >>>>>>
> >>>>>> -----Original Message-----
> >>>>>> From: cdt-dev-bounces@xxxxxxxxxxx
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>> [mailto:cdt-dev-bounces@xxxxxxxxxxx]
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>>> On Behalf Of vladchuk@xxxxxxxxxxx
> >>>>>> Sent: Friday, September 30, 2005 9:32 PM
> >>>>>> To: Cdt-dev@xxxxxxxxxxx
> >>>>>> Subject: [cdt-dev] Using nmake with managed builds
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> Apparently, nmake  has a makefile command length limitation (is it
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>> 1024
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>>> chars?) so it is  impossible to use it with anything but trivial
> >>>>>> projects.
> >>>>>> Does anybody know  how toget around this problem?
> >>>>>>
> >>>>>> Thanks,
> >>>>>> vladchuk
> >>>>>>
> >>>>>>
> >>>>>> _______________________________________________
> >>>>>> cdt-dev mailing list
> >>>>>> cdt-dev@xxxxxxxxxxx
> >>>>>> https://dev.eclipse.org/mailman/listinfo/cdt-dev
> >>>>>> _______________________________________________
> >>>>>> cdt-dev mailing list
> >>>>>> cdt-dev@xxxxxxxxxxx
> >>>>>> https://dev.eclipse.org/mailman/listinfo/cdt-dev
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>> _______________________________________________
> >>>>> cdt-dev mailing list
> >>>>> cdt-dev@xxxxxxxxxxx
> >>>>> https://dev.eclipse.org/mailman/listinfo/cdt-dev
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>> _______________________________________________
> >>>> cdt-dev mailing list
> >>>> cdt-dev@xxxxxxxxxxx
> >>>> https://dev.eclipse.org/mailman/listinfo/cdt-dev
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>> _______________________________________________
> >>> cdt-dev mailing list
> >>> cdt-dev@xxxxxxxxxxx
> >>> https://dev.eclipse.org/mailman/listinfo/cdt-dev
> >>>
> >>
> >> _______________________________________________
> >> cdt-dev mailing list
> >> cdt-dev@xxxxxxxxxxx
> >> https://dev.eclipse.org/mailman/listinfo/cdt-dev
> >>
> >>
> >>
> > _______________________________________________
> > cdt-dev mailing list
> > cdt-dev@xxxxxxxxxxx
> > https://dev.eclipse.org/mailman/listinfo/cdt-dev
> >
> Well, after reading all the responses and doing some investigation of my
> own it indeed appears that 8K (CMD shell limit) all we can get when
> using nmake.
> The solution is then (also suggested by Microsoft) to keep the paths as
> short as possible. I don't suppose it is possible to use any other shell
> with nmake.
> 
> I wonder how MS gets around their own limitations when using nmake on
> large projects?

My bet is that they don't use nmake. Visual Studio has a built-in build
system that calls the compiler, linker and other tools directly, something
on the CDT wish list as well.

Also, I think you can also get around the limits by putting the options in a
file and pass that file with a special argument. I can't remember which
tools support this though. But I bet it was to get around the 8K limit.

Cheers,
Doug


Back to the top