ウィキのコピーミラー

これは pascal.chat のウィキのミラーです。編集、履歴、ログインはそちらで行います。

Lazarus Packages/ja

Deutsch · English · Español · Français · Português · Slovenčina · Русский · 日本語

Lazarusのパッケージシステムの概要

lazarusパッケージとは?

lazarusパッケージとは、ユニットやコンポーネントを集めたものです。それには、どのようにコンパイルできるかという情報や、IDEや他のパッケージや、プロジェクトで、どうやって使うか、といった情報が含まれています。Delphiと大きく違うところは、パッケージはOSに依存したライブラリではないということです。(Library Packagesは特別にコンパイルされたライブラリで、アプリケーションやIDEで使われます。Delphiのパッケージは、コンパイラ内部でのサポートを必要としますが、コンパイラマジックを必要としています。fpcは現在の時点ではそのようなコンパイラマジックを受け付けませんし、もちろんそのようなマジックはOS環境に依存するものとなります)

現在のところ、Free Pascalコンパイラは、スタティックな(静的にリンクされた)パッケージしかサポートしません。ですから、パッケージをインストールしたり、アンインストールしたりするときには、IDEのコンパイルと再起動が必要です。

lazarusパッケージは名前とバージョンによって識別され、区別されます。

よくある質問

Q: 私はパッケージをインストールする必要はありますか?

A: パッケージが、IDEのコンポーネントパレットのコンポーネントのように、フォーム設計の際に必要な場合に限り、インストールする必要があります。そうでなければ、パッケージをインストールする必要はありません。プロジェクトでパッケージを使いたいだけならば、インストールしないでください。

Q: パッケージをインストールしました。しかし、IDEがユニットを見つけてくれません。

A: パッケージのインストールとは、パッケージをあなたのプロジェクトではなくIDEに統合することを意味します。この二つは違うものです。あなたのプロジェクトでパッケージを使いたいときは、メニューからProject -> Project Inspector -> Add -> New Requirement を選択してください。また、IDEに全く機能を付け加えないようなパッケージはアンインストールしてください。

クイックスタート

パッケージシステムを使う操作方法です。次のようにしてください。

新規のパッケージを作る:

これでめでたく最初のパッケージを作ることができました。

新しいコンポーネントを追加する:

Lazarusがインストールされたディレクトリに対する書き込み権限がない場合には、Lazarusを直接呼び出す代わりに、startlazarusコマンドも使えます。これはたとえば、 ~/.lazarusにある新しく生成されたLazarsuの実行ファイルを起動します。

これでめでたく最初のコンポーネントを入れた最初のパッケージをインストールできました。

パッケージのためのIDEメニュー

新しいパッケージを作ります。

text
 ここで、現在開いているプロジェクトで必要とされているパッケージを見ることができます。
 新しくパッケージへの依存関係を追加することや、不要になったパッケージへの依存を削除することができます。
text
 ここでコンパイラオプションをどのパッケージから継承するかを見ることができます。

Components ->

pascal
 - 'Open package'
   ??????????????????????????????????????????????????????????????????????????????????????????
   
 - 'Open package file'
   .lpk ??????????????????????????????
   
 - 'Open package of current unit'
   ???????????????????????????????????????????????????????????????????????????.lpk ??????????????????????????????
   
 - 'Open recent package'
   ??????????????????????????????????????????(lpk file)??????????????????
   
 - 'Add active unit to a package'
   ??????????????????????????????????????????????????????????????????????????????????????????
   
 - 'Package Graph'
   ????????????????????????????????????????????????????????????????????????????????????
   
 - 'Configure installed packages'
   IDE????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

Project -> Project Inspector

text
 ここでは、プロジェクトで使われているすべてのパッケージを確認したり変更することができます。

理屈

各々のLazarusパッケージに.lpkファイルが一つずつあります。パッケージは名前とバージョンで識別されます。名前はlpkファイル名と同じでなくてはなりません。たとえば、次のように: Name: Package1, Version: 1.0, Filename: /home/.../package1.lpk.

例:

pascal
This file was automatically created by Lazarus. Do not edit!
This source is only used to compile and install
the package GTKOpenGL 1.0.
unit GTKOpenGL;
interface
uses GTKGLArea, GTKGLArea_Int, NVGL, NVGLX, LazarusPackageIntf;
implementation
procedure Register;
begin
  RegisterUnit('GTKGLArea', @GTKGLArea.Register);
end;
initialization
  RegisterPackage('GTKOpenGL', @Register)
end.

gtkopengl.compiled の例:

text
<?xml version="1.0"?>
<CONFIG>
  <Compiler Value="/usr/bin/ppc386" Date="781388725"/>
  <Params Value=" -Rintel -S2cgi -CD -Ch8000000 -OG1p1
    -Tlinux -gl -vewnhi -l -Fu../../../lcl/units
    -Fu../../../lcl/units/gtk -Fu../../../packager/units
    -Fu. -FElib/ gtkopengl.pas"/>
</CONFIG>

ヒントと例題

ここにヒントや例題などを書いてください。

Example

pascal
I will use the tiOPF framework as an example  The tiOPF has the
following directory layout, due to the fact that it compiles for FPC,
Delphi 5-7, D2005 and D2006.

Source                <= full path \Programming\3rdParty\tiOPF\Source
 \Compilers
    \Delphi7          <= Delphi 7 package files live here
    \D2005
    \FPC              <= the tiOPF.lpk lived here
 \Core                <= core unit files
 \Options             <= optional unit file for extra features
 \GUI

Using this example, I included in the "Options - Usage - Units"
editbox the following paths:
"$(PkgOutDir);..\..\Core;..\..\Options;..\..\GUI" which will be added
to whatever project uses this package.

コンポーネントを既存のパッケージに追加するには

コンポーネントを含んだファイルを既存のパッケージに追加するには、次のようにすればできます:

これだけで、コンポーネントがコンポーネントパレットに現れることになります。

Register 手続き

コンポーネントは Lazarus に登録されてはじめてコンポーネントパレットに現れます。 この登録を行うのが Register 手続きです。この手続きはインストールプロパティやコンポーネント用のコンポーネントエディタと同じく、ユニットの interface 節に現れる必要があり、その手続きの中で RegisterComponent を実行する必要があります。

一つのパッケージの中に、複数の Register 手続きがあってもかまいませんが、パッケージエディタで、登録用手続きをもつユニットがどれか指定する必要があります。そうすれば、Lazarusはパッケージをインストールする時どの手続きを呼ばなければならないかわかります。

登録手続きをもつユニットをマークするには、二つの方法があります:

上記のように、ユニットをパッケージに追加する操作の間に行うことができます。また、パッケージダイアログの中でユニットを選び、details パネルの中の 'Register' チェックボックスをチェックすることもできます。プロパティを変更した後、リコンパイルしてインストールするのを忘れないで下さい。

貢献している人とコメント

This page has been converted from the epikwiki version.


From the Free Pascal wiki, page "Lazarus Packages/ja", as it stood on 2008-08-07 after a change by TheCreativeCAT, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

第3版、最終更新:WikiArchive 。