import /pathname to directory
Sun WorkShop のソースブラウズモードの場合、現在の作業用ディレクトリ以外のディレクトリにデータベースを読み込むことができます。このため、ディレクトリごとに個別のデータベースを保持できます。
たとえば、プロジェクト A のプログラマがプロジェクト B のディレクトリに書き込むこともその逆もできないように、管理権限を設定されているとします。この場合、プロジェクト A とプロジェクト B は、それぞれ独自のデータベースを保持する必要があります。どちらのデータベースも、他方のプロジェクトのプログラマからは読み取りしかできず、書き込みはできません。
図 D-1では、現在の作業用ディレクトリは /project/source1 です。source2 のデータベースを読み取るには、どちらかのコマンドを source1 の sb_init ファイルに指定します。
import /project/source2 import ../source2
export prefix into path
このコマンドは、コンパイラと sbtags に、ソースファイルのデータベース構成要素ファイルの書き込みを実行させます。この場合、Sun WorkShop のソースブラウズモードとコンパイラで使用される現在の作業用ディレクトリ以外のディレクトリに書き込まれます。
接頭辞で始まる完全パス名の付いたソースファイルをコンパイラが処理する場合、生成されるブラウザデータベース (.bd) ファイルは path に格納されます。
export コマンドには path の import コマンドが暗黙的に含まれているので、エクスポートされたデータベース構成要素は Sun WorkShop のソースブラウズモードで自動的に読み込まれます。
export コマンドでは、/usr/include の #include など、同じファイルと関連付けられたデータベースファイルを単一のデータベースに配置してディスク空間を節約できますが、各プロジェクトにおける個別のデータベースも保持されます。
sb_init ファイルに複数の export コマンドが含まれている場合、特定の順序で並べ替える必要があります。コンパイラは、sb_init ファイルに記述された順序に従って export コマンドを走査します。
図 D-2では、データベースサブディレクトリの /usr/include にあるファイルに対して作成された .bd ファイルと索引ファイルを sys サブディレクトリに配置するため、source1 の sb_init ファイルの中で export コマンドを指定しています。
export /usr/include into /project/sys
構成の中で source2 ディレクトリの sb_init ファイルに同じ export コマンドが含まれているとします。この場合、同じデータベースファイルを 2 つ作成する必要はないので、ディスク空間を節約できます。stdio.h ファイルの場合、コンパイラは stdio.h のデータベースを 1 つ、sys サブディレクトリに作成します。
sb_init ファイルの暗黙的な export と into コマンドは、export コマンドで明示的に指定されていないソースファイルに対して作成されたデータベースファイルを現在の作業用ディレクトリに格納するように、コンパイラに指示します。図 D-2 では、a.cc、b.cc と関連付けられた .bd ファイルが、source1 ディレクトリのデータベースサブディレクトリに格納されています。
sb_init ファイルで export コマンドを指定すると、暗黙的な import コマンドによって、指定されたデータベースが読み取られます。図 D-2 の構成の場合、問い合わせを発行するたびに、sys サブディレクトリ内のデータベースと source1 ディレクトリ内のデータベースが検索されます。
次に、source1 の sb_init ファイルにユーザーがこの export コマンドを指定した例を挙げます。
export /project/include into /project/include
図 D-3 に示すように、データベースサブディレクトリの /project/include のファイルに対して作成されたデータベースファイルと索引ファイルが /project/include サブディレクトリに格納されます。/project/include のデータベースは、暗黙的な import コマンドによって読み取られます。
include ファイルが標準以外の位置にある場合でも、データベースファイルは共通サブディレクトリに格納されます。プロジェクト内で同じ include ファイルに対して多数の異なったディレクトリから複数の参照がある場合、export コマンドはディスク空間を節約します。
replacepath from_prefix to_prefix
このコマンドは、ソースブラウズデータベース内のパス名を変更する方法を指定します。
一般的に、from-prefix はオートマウンタの「マウントポイント」 (オートマウンタが実際にファイルシステムをマウントする場所のパス名) であり、to-prefix はオートマウンタの「トリガーポイント」 (開発者が使用する既知のパス名) です。
オートマウンタの使い方は柔軟性に富んでおり、ホストによって異なる場合があります。
デフォルトの replacepath コマンドを使用して、オートマウンタのアーティファクトを削除します。
replacepath /tmp_mnt
このためには、コマンドの第 1 引数にマウントポイント、第 2 引数にトリガーポイントを指定する必要があります。
automount-prefix mount_point trigger_point
automount-prefix コマンドを使用すると、プログラムのコンパイルに使用していないコンピュータでブラウズできるようになります。このコマンドは、automount-prefix のパス変換がコンパイル時に行われてデータベースに書き込まれる点を除けばreplacepath コマンドと同じです。
automount-prefix コマンドは、データベースに格納されている名前からどのオートマウンタの接頭辞を削除するかを定義します。オートマウンタがファイルシステムをマウントするディレクトリは mount_point です。trigger_point は、エクスポートされたファイルシステムにアクセスするための接頭辞であり、デフォルトは / です。
データベース内のパスで失敗した場合、automount_prefix コマンドと replacepath コマンドからのパス変換は、ブラウズ中にソースファイルを検索するために使用されます。
一見すると、両方のパスの検索は不可能と思われます。コンパイラの実行中に作成されたブラウザデータベースには、各ソースファイルの絶対パスが格納されています。絶対パスがコンピュータ間で統一されていないと、問い合わせに応答するときに Sun WorkShop がソースファイルを表示できません。
この問題については、次のいずれかの方法で対処できます。
すべてのコンピュータですべてのソースファイルが同じマウントポイントにマウントされていることを確認する
オートマウントされたパスでプログラムをコンパイルする。そのようなパスに対する参照があると、オートマウンタは別のコンピュータからファイルシステムを自動的にマウントする
デフォルトの automount-prefix コマンドは、オートマウンタのアーティファクトの削除に使用されます。
automount-prefix /tmp_mnt /
automount-prefix コマンドが指定されていない場合に限り、デフォルトの規則が生成されます。
オートマウンタの使い方に関する詳細は、automount(1M) のマニュアルページを参照してください。
索引の再構築から関連するデータベースのガベージコレクトまでの時間を制限します。制限時間を超過すると、コンパイラは自動的に sbcleanup を呼び出します。デフォルトでは 12 時間です。