3
votes

I've just noticed that whenever I do an incremental compile (ctrl-F9) of any of my Delphi 2010 projects, all JEDI units referenced in my project are recompiling although they have not been changed in any way. In fact, if I create a new project, drop a JEDI control on the form and compile, I see all JEDI dependencies getting recompiled. If I think hit ctrl-F9 a second time without making any changes in my project, the same thing happens.

Anyone know what's causing this?

Update: The problem appears to be related to the subdirectory jvcl\run on my system. All units in this folder are getting recompiled each time I do a Delphi compilation (even without touching my project source). The compiled dcus are getting and left in this subdirectory on every compilation, even though the compiled dcus already exist in jvcl\lib\d14. I do not have jvcl\run on my library path.

Additionally, if I move the jvcl\run directory elsewhere on my hard disk my project compiles and links successfully, presumably finding the dcus in jvcl\lib\d14 (which is on my path).

2

2 Answers

1
votes

Sometimes you will see the unit name flash by on the compile progress screen, even when it is not being recompiled.

To know for sure, check the date of the Jedi DCU's before and after compile.

Also, how did you install the Jedi controls? If you use the default installer, then they shouldn't compile ever (they are compiled at install). If you just dropped all the source into your library path, then they will recompile on a build, or if they are changed (and various other conditions).

1
votes

There are a few placed to check for your "jvcl\run" path in your settings.

The first two:

  • Tools|Options
  • Environment Options|Delphi Options|Library-Win32
    • (1) "Library Path:" Edit Box
    • (2) "Debug DCU Path:" Edit Box

The Third is:

Open Your Project

  • Project | Options
  • Directories/Conditionals
  • (3) Search Path: Edit Box

And finally if you compile via the command line you need to check what you are passing in the DCC32.CFG and/or PROJECTNAME.CFG and the command line parameters to DCCC32.

The reason your compiled DCU's are getting placed in directory your source is in is because you have not set an "Unit Output Directory"