"include_lib"と "include"の違いは何ですか?Erlang: "include_lib"と "include"の違いは何ですか?
など。
-include_lib("eunit/include/eunit.hrl")
"include_lib"と "include"の違いは何ですか?Erlang: "include_lib"と "include"の違いは何ですか?
など。
-include_lib("eunit/include/eunit.hrl")
ドキュメントはthe difference between include and include_libを記述する方法は次のとおりです。
include_lib
はinclude
に似ていますが、絶対的なファイルを指摘するべきではありません。代わりに、(おそらく変数置換の後の)最初のパスコンポーネントは、アプリケーションの名前とみなされます。例:
-include_lib("kernel/include/file.hrl").
コード・サーバーは、コードを使用しています:カーネルの現在(最新)バージョンのディレクトリを見つけるためLIB_DIR(カーネル)、その後、サブディレクトリが含まは、ファイルのファイルが検索され.hrl。
あなたの例では、あなたが含むeunitのバージョンを指摘する必要はありません。あなたのライブラリパスに存在するeunit:sの最新のeunit.hrlが含まれています。
最初に明らかになっていない点の1つは、-include
と-include_lib
は、ヘッダーファイルを探すときに別のパスセットを使用することです。 -include_lib
は、実際にはヘッダーファイルパスではなくコードパスを使用します。
したがって、フラグerlc
は、検索パスへのパスを追加すると予想されます。-I
です。 -include_lib
のフラグは-pa
/-pz
です。
既に言及したように、-include_lib
を使用すると、モジュールを特定のライブラリバージョンに指定することができなくなります。
さらに、プロジェクトのsrc/
サブディレクトリ内に格納されていると-include
を使用して含まれている内部ヘッダその規則があります。 外部ヘッダー(他のライブラリ/プロジェクトで使用することを意図している)ファイルはinclude/
に格納され、-include_lib
を使用してインクルードされています。
include_libを使用して、インストールされているアプリケーションの特定のバージョンから必要なファイルを含めることもできると思います。 –