1

pkg-config と environment モジュールの両方に関する私の理解が多少間違っている場合、この質問はあまり意味がないかもしれませんが、このトピックに関する特定の情報が見つからなかったので、とにかく質問します。完全に優れた解決策が利用できる可能性があります。

必要に応じて開発環境を簡単にロードするためにモジュールを使用し始めました (つまり、コマンドmodule load fooなどを使用します)。最近では、自分のプロジェクトに meson ビルド システムを採用しています。meson では、ライブラリは依存関係として扱われ、代わりにバックグラウンドで pkg-config を使用して検出されます。そのため、ライブラリを検出し、ライブラリとインクルード ディレクトリを設定する 2 つの方法があります。

例として、ライブラリ foo 用の次の (簡略化された) モジュール スクリプトがあります (lua に基づく lmod を使用しています)。

prepend_path("LD_LIBRARY_PATH", "/opt/foo/lib")
prepend_path("CPATH", "/opt/foo/include") 

pkg-config ファイル (*.pc) で同様のことを行うこともできます (つまり、pkg-config の理解が正しければ)。

prefix=/opt/foo
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: foo
Cflags: -I${includedir}
Libs: -L${libdir} -lfoo

現在、どちらもほとんど同じことを行っているように見えますが (環境のセットアップに関して)、単に modulefiles を使用するだけでは meson が依存関係を見つけることができず、pkg-config を使用する必要があります (基本的に 2 つのファイルを作成する必要があります)。手動または動的のいずれかですが、それはメンテナンスの負担のように聞こえ、あまりきれいではありません)。同様に、pkg-config ファイルを作成し、そのファイルの場所を PKG_CONFIG_PATH に追加することもできます。

prepend_path("LD_LIBRARY_PATH", "/opt/foo/lib")
prepend_path("CPATH", "/opt/foo/include")
prepend_path("PKG_CONFIG_PATH", /path/to/*.pc/file) 

ただし、これには 2 つのファイル (pkg とモジュール) が必要です。私はむしろモジュール環境が好きなので、それを捨てたくないので、pkg-config(したがってmeson)が知ることができるモジュールファイルをロードするだけで、物事を行うためのより良い/よりクリーンな方法はありますか依存関係について?

4

1 に答える 1

1

現在、環境モジュールと pkg-config ツールの間にブリッジはありません。モジュールシステムを維持するために達成できる最善の方法は、利用可能なすべての pkg-config ファイルを照会し、対応するモジュールファイルを作成するスクリプトを用意することです。そして、そのスクリプトを定期的に実行して、物事を同期させます。

于 2020-05-12T05:32:58.963 に答える