On Wed, 7 Dec 2005, Florian Klaempfl wrote:

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.

It's not the compiler.

Lazarus itself needs to know whether it should call the compiler or not:

- The compiler doesn't recompile a unit unless it needs to.
  (i.e. some source file is changed) It knows this because it stores
  this information in a unit.

- However, the compiler does always recompile and link the program
  itself. It has no way of knowing whether it needs to or not, because
  the source files are not stored in the compiled program.

- For the same reasons, if you set a conditional define in the IDE,
  then the program should be rebuilt. The compiler cannot detect this.

  (You can also try this in Delphi: Delphi doesn't detect a change
  in conditionals, and won't recompile units unless you say 'build')

Michael.

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

Reply via email to