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

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?

vladchuk


Back to the top