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

I have made a proposal for how to allow a tool integrator to solve the
command line length problem in bugzilla 72965.  If you are interested,
please take a look and comment.

Leo

-----Original Message-----
From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx]
On Behalf Of Alex Chapiro
Sent: Monday, October 03, 2005 8:07 AM
To: CDT General developers list.
Subject: Re: [cdt-dev] Using nmake with managed builds

Sounds strange. I tried nmake and got 32K length limit which is quite 
enough for any reasonable project. I used VC++6.0 for testing.

vladchuk wrote:

>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
>_______________________________________________
>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


Back to the top