Mattias Gaertner schrieb:

After some tries and assistance from the chat I've moved the package source files into a new directory dockmanager/package. Is that okay?

Yes, if this is an example package only used by the examples.

The package contains an docking manager (LDockTree replacement), useful in every application.


Next question: where to place the package project, into the
dockmanager/ or dockmanager/package directory?

I don't know what you mean with "package project". An example project
for the package? Or the package main file (.lpk)?

In Delphi packages are projects, and the package projects (main files) frequently reside in dedicated directories, one for every compiler version.

Since Lazarus has not so many problems with compiler versions, the .lpk file better should reside in the directory with all the other package files.

IMO this difference between Delphi and Lazarus packages should be mentioned in the documentation about creating Lazarus packages. I've tried to collect all the issues, that currently are not clear to a Lazarus package newbie, so that the documentation can be updated accordingly.

Don't mix source directories. Every source directory should be
exactly in one project or in one package.

Another topic for the documentation. In Delphi I used to develop packages together with a test application, with all the source files in the same directory. This procedure is not suitable for Lazarus packages, since the compiled files go into different directories for compilation of the test project and the package itself. The compiler later is confused by the duplicate files in different directories, what should be prevented by stricter separation of both "projects".


With the project in dockmanager/, adding files resulted in a dialog
"New unit not in unitpath", suggesting "Add package/ to UnitPath". Of
course the path should be added?

Not always.

When and when not?

As with the other pathes, the documentation does not shed enough light on the purpose of the different pathes. Eventually the option dialogs should show according hints for the various edit fields.


********************************************************************
BTW: this dialog appears on the wrong monitor, not the one with the Package dialog :-(
The same for "File not found" while loading a project.

please create a bug report.


The "Add to project" dialog has an CANCEL button with Caption="CancelDependButton".

please create a bug report.

My last reported issue already had been fixed, before I submitted the report. Sometimes the Lazarus developers react very fast on such simple issues :-)

********************************************************************


The remaining problems seem to be related to the package pathes. The "Package Options" dialog shows Unit = "$(PkgOutDir)". What's "PkgOutDir",

see
http://wiki.lazarus.freepascal.org/IDE_Window:_Package_Options#Unit

The description is hidden in
<http://wiki.lazarus.freepascal.org/IDE_Macros_in_paths_and_filenames>
in an unsorted list of many unrelated macros.

The wording "Unit Files" or "Other Unit Files" is very misleading, because "unit" is associated with *source* files in the first place, not with *compiled* files. I already noticed that the Lazarus project has several unit/ directories for compiled files, where a Delphi user would expect that these directories contain source files (for e.g. packages).

Descriptions like:
>>
The unit path is used by the IDE and the compiler to search for pascal units (.pas, .pp, .ppu).
<<
are very confusing, because the locations for .pas and .ppu files are (should be) different for packages, and the IDE will not have much use for .ppu files, I think.


The "Other" attribute is useless as long as it is not clear what are "non-Other" items.


and what's "PkgDir" found somewhere else?

where is "somewhere else"?

I dunno remember. I've been looking through so many wiki pages and option dialogs, also for other packages, before writing this article. And finally I had more questions than answers, as you see :-(

here is the list of macros:
http://wiki.lazarus.freepascal.org/IDE_Macros_in_paths_and_filenames

IMO this list should be structured better, and/or sorted alphabetically. (see above)



It looks as if the Compiler Options -> Paths defines PkgOutDir as -FU, relative to
the package project file?

bingo. Except that there is no "package project file".
see
http://wiki.lazarus.freepascal.org/IDE_Window:_Compiler_Options#Paths

After some opening and closing of dialogs, the Unit entry has changed
to "$(PkgOutDir)/", the added trailing "/" seems to be more
consistent with other package settings?

yes, see
http://wiki.lazarus.freepascal.org/IDE_Window:_Compiler_Options#Paths

Yes and no. The path delimiter should be added *before* the path is shown in the dialog, when a new package is created. (see below)



Should I check "Add package unit to uses section" - what's the
purpose or benefit of this option?

I added some info to the wiki. Press F1.

Where?

This option should be listed as item 1.3 in
<http://wiki.lazarus.freepascal.org/IDE_Window:_Package_Options>, but no such item exists there :-(



After I created the package during above steps, and updated the
original sample project to use the new package, everything worked
fine on Linux. Not so on Windows :-(

You forgot to tell the error message.

This was a very weird thing, in the preceding version of the package. The compiler could not find the required package SynEdit.

The reason for this error was the missing path delimiter in the Unit path (see above). The compiler search path then contained an invalid concatenation with the inherited pathes, hiding the path to the SynEdit unit files. AFAIR I noticed the bad path in the Compiler Options -> Inherited page, where the bottom pane showed the merged path in one line. Later, when the IDE really had added the delimiter, that line occured splitted into two lines, and the compilation error disappeared.

The package creation wizard should add the missing path delimiter, to prevent such misleading compiler errors.

DoDi


_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to