Yoyong Hernan wrote:

> Below is a sample "Run" in Lazarus IDE....
> 
> [TMainIDE.DoRunProject] A
> TMainIDE.DoInitProjectRun A True 0
> TMainIDE.DoInitProjectRun B
> TMainIDE.DoSaveAll
> TMainIDE.DoSaveProject End
> [TCompiler.Compile] CmdLine="C:\FPC\2.0.0\bin\i386-win32\ppc386.exe 
> -S2cgi -OG1 -gl -WG -vewnhi -l -Fu..\..\lazarus\lcl\units\i386-win32\
> -Fu..\..\lazarus\lcl\units\i386-win32\win32\
> -Fu..\..\lazarus\packager\units\i386-win32\ -Fu.
> -oD:\Projects\pascal\fpclaz\Test\project1.exe -dLCL -dLCLwin32
> D:\Projects\pascal\fpclaz\Test\project1.lpr"
> Hint: Start of reading config file C:\FPC\2.0.0\bin\i386-win32\fpc.cfg
> Hint: End of reading config file C:\FPC\2.0.0\bin\i386-win32\fpc.cfg
> Free Pascal Compiler version 2.0.0 [2005/05/08] for i386
> Copyright (c) 1993-2005 by Florian Klaempfl
> Target OS: Win32 for i386
> Compiling D:\Projects\pascal\fpclaz\Test\project1.lpr
> Linking D:\Projects\pascal\fpclaz\Test\project1.exe
> 15 Lines compiled, 87.8 sec
> [TCompiler.Compile] end
> [TMainIDE.DoRunProject] B
> NOTE: No debugger defined. Starting program without debugging ...
>  EXECUTING ""D:\Projects\pascal\fpclaz\Test\project1.exe""
>    WorkingDir "D:\Projects\pascal\fpclaz\Test\"
> [TMainIDE.DoRunProject] END
> 
> As one might have noticed, the process that Lazarus creates just calls
> fpc. So basically, my guess is that fpc is not capable of detecting as
> of now that the project need not be compiled and linked........ just a
> guess.

It can't know if a program needs so be recompiled because an include file used
by the main program could have been changed.

> 
> Based on this, I would think that fpc needs to have a compile switch as
> was suggested before if a full recompile is needed or do nothing. Again,
> as I suggested before this switch might only check the current project
> and top level units used by the project to avoid checking thousands of
> units. Or if this is difficult or future feature of the compiler then we
> can implement a basic logic in Lazarus to check if the project needs a
> recompile. If you all guys agree with this second option, I might be
> able to work it out.
> 
> -Yoyong
> 
>> I think, fpc does this automatically it compiles only units that are
>> changed ...
>>
>> But I think if no changes are made lazarus musnt compile and link the
>> project ...
>>
>>
>> Christian
>>
>> -----Ursprüngliche Nachricht-----
>> Von: Yoyong Hernan [mailto:[EMAIL PROTECTED] Gesendet: Mittwoch, 7.
>> Dezember 2005 03:51
>> An: [email protected]
>> Betreff: Re: [lazarus] Running a project always performs compile and
>> link sequence
>>
>> Mattias Gaertner wrote:
>>
>>  
>>
>>> On Tue, 06 Dec 2005 11:08:23 +0100
>>> Florian Klaempfl <[EMAIL PROTECTED]> wrote:
>>>
>>>
>>>
>>>   
>>>
>>>> Vincent Snijders wrote:
>>>>
>>>>  
>>>>     
>>>>
>>>>> Yoyong Hernan wrote:
>>>>>
>>>>>    
>>>>>       
>>>>>
>>>>>> Hi All,
>>>>>>
>>>>>> I guess this question was already asked before but I just couldn't
>>>>>> find the mail thread. Anyway, my question is about running a project
>>>>>> inside the IDE. I noticed that every time I pressed "F9" it always
>>>>>> goes to compile and link process even though there are no changes in
>>>>>> code.
>>>>>>
>>>>>> Can anyone explain on this? If this is a bug, please let me know. I
>>>>>>         
>>
>> am
>>  
>>
>>>>>> trying to get on track again in Lazarus.
>>>>>>      
>>>>>>         
>>>>>
>>>>> Checking changes is hard. Compiling it is the only to make sure that
>>>>>       
>>
>> you
>>  
>>
>>>>> running the latest saved source.
>>>>>    
>>>>>       
>>>
>>> It's true, only the compiler can decide, if recompilation is needed.
>>> But at least the IDE could reduce the compiler execution. We could
>>>   
>>
>> implement
>>  
>>
>>> the same mechanism as for packages:
>>> - extending the project inspector to maintain all required files. Not
>>>   
>>
>> only
>>  
>>
>>> units.
>>> - creating the 'projectname.compiled' file after build
>>> Then the IDE could simply test, if any source file is newer than the
>>> .compiled file.
>>>
>>>
>>>
>>>   
>>
>> I wanna help with the development of this project but based on the
>> ongoing discussion this seems like a big/difficult task to implement.
>> Anyway, if someone can guide me I might be able to help and improve my
>> skill level.
>>
>> Back to the discussion. How would we know the files needed by the
>> project. I was thinking that we can parse for all the units used in a
>> project but how about the units used by project and the units used by
>> the units? Or can we just check the project and units it contains if the
>>
>> files are older than the exe file then just run don't compile. I believe
>>
>> this one should be easy. Now if the user made changes to units deep down
>>
>> then he could just do a build.
>>
>> So in summary, if user presses F9 check the project file and the top
>> level units. If the exe file is more recent then just run the file don't
>>
>> do a compile. :-)
>>
>> Is my solution too dumb? just my two cents :).
>> -Yoyong
>>
>>  
>>
>>>
>>>
>>>   
>>>
>>>> The correct solution would be that the compiler doesn't recompile/link
>>>>     
>>
>> if
>>  
>>
>>>> there is an exe which is newer than any source. This isn't easy to
>>>>     
>>
>> achieve
>>  
>>
>>>> though, the compiler stored nowhere the information which include
>>>> files/units are used by the main program file.
>>>>  
>>>>     
>>>
>>> And the command line options are not stored in the exe.
>>> For example: some options depend on macros. So, even if the whole
>>>   
>>
>> project is
>>  
>>
>>> unchanged, and the exe is newer, a rebuild could be neccessary. That's
>>>   
>>
>> why
>>  
>>
>>> the .compiled file is needed.
>>> Then there are only two cases left, when the IDE test will fail:
>>> - Some statically linked in libs changed.
>>> - Something changed the filedates.
>>>
>>>
>>> Mattias
>>>
>>>   
>>
>>
>> _________________________________________________________________
>>     To unsubscribe: mail [EMAIL PROTECTED] with
>>                "unsubscribe" as the Subject
>>   archives at http://www.lazarus.freepascal.org/mailarchives
>>
>>
>>
>> _________________________________________________________________
>>     To unsubscribe: mail [EMAIL PROTECTED] with
>>                "unsubscribe" as the Subject
>>   archives at http://www.lazarus.freepascal.org/mailarchives
>>
>>  
>>
> 
> _________________________________________________________________
>     To unsubscribe: mail [EMAIL PROTECTED] with
>                "unsubscribe" as the Subject
>   archives at http://www.lazarus.freepascal.org/mailarchives
> 

_________________________________________________________________
     To unsubscribe: mail [EMAIL PROTECTED] with
                "unsubscribe" as the Subject
   archives at http://www.lazarus.freepascal.org/mailarchives

Reply via email to