プラグインアーキテクチャを使用してCプログラムを開発しています。両方の.rpm
パッケージをビルドしてパッケージ化します.deb
。
一部のプラグインには、そのプラグインでのみ使用できるイメージファイルやスクリプトファイルなどの追加のバイナリリソースがあります。これらの追加リソースはプラグインファイルと同じディレクトリにあります.so
。したがって、プラグインは関連ファイルを開くためにディスクの場所と同じディレクトリになければなりません。
これを行う標準または少なくともやや慣用的な方法はありますか?
特に/usr/lib/<foo>/plugins
一部のディストリビューションでは/usr/lib64
vs。/usr/lib
また、開発中はプログラム(および/またはプラグイン)が標準の場所にインストールされません。これはユーザーのホームフォルダ内のソースコードサブディレクトリで実行されます。この場合、プラグインフォルダは開発中のバイナリとはわずかに異なる相対位置にあります。
編集する:具体的な例を挙げると、プロジェクトのソースコードツリーにはディレクトリがfoo
ありますplugins
。付属の標準プラグインの一部がこのディレクトリfoo
に保存されます。plugins
プラグインの1つがこれpyconsole
に依存しfoo_pycon.py
、これはplugins\pyconsole\
ディレクトリにもあります。
開発中に、さまざまなポイントのさまざまな作業のために、ホームディレクトリに複数のストレージコピーがある可能性があります。作業コピーはにあります~\src\foo_branch\
。
foo
私はローカルに構築されたインスタンスをインスタンスと呼びます~\src\foo_branch\release_x86_64\bin\foo
。foo
を含むすべてのプラグインを相対サブディレクトリに配置します~\src\foo_branch\release_x86_64\lib\plugins\pyconsole.so
。
pyconsole.so
この特定のインスタンスが自分のインスタンスを開いて使用できるように、場所を知らせるための標準または慣用的な方法はありますかfoo_pycon.py
?
パッケージを介してインストールする場合、相対パスが異なる場合があります。インストールされたバイナリの場所と同様に、/usr/bin/foo
プラグインを/usr/lib[64]/foo/plugins
。