ポートプログラムをビルドするRebarベースのErlangアプリケーションがあります。このポートプログラムはLinux固有であるため、MacOSではコンパイルが失敗します。ただし、Mac OSでビルドする場合は、Rebarでポートプログラムをスキップしてください。どうやってやるの?
の現在の仕様はrebar.config
次のようになります。
{port_specs, [{"priv/my_port", ["c_src/foo.c", "c_src/bar.c"]}]}.
ポートプログラムをビルドするRebarベースのErlangアプリケーションがあります。このポートプログラムはLinux固有であるため、MacOSではコンパイルが失敗します。ただし、Mac OSでビルドする場合は、Rebarでポートプログラムをスキップしてください。どうやってやるの?
の現在の仕様はrebar.config
次のようになります。
{port_specs, [{"priv/my_port", ["c_src/foo.c", "c_src/bar.c"]}]}.
rebar_port_compiler.erlのコメントに記載されているように、のリスト要素にport_specs
は別の形式があり{ArchRegex, TargetFile, Sources}
ます。したがって、Rebar構成を次のように記述します。
{port_specs, [{"linux", "priv/my_port", ["c_src/foo.c", "c_src/bar.c"]}]}.
「その正規表現は何と一致しますか?」とあなたは尋ねるかもしれません。これは、ハイフンで区切られた次の部分で構成されるrebar_utils:get_archの戻り値と照合されます。
erlang:system_info(otp_release)
、例えば"R15B02"
erlang:system_info(system_architecture)
。Unixライクなシステムの場合、これはconfigureスクリプトによって決定されるCPU-vendor-OSトリプレットです(例:"i386-apple-darwin10.8.0"
または)"x86_64-unknown-linux-gnu"
。erlang:system_info({wordsize, external})
。unix
またはwin32
。(によって返されるタプルの最初の要素os:type/0
)したがって、最終結果はまたはのようになり"R15B01-i386-apple-darwin10.8.0-32-unix"
ます"R15B02-x86_64-unknown-linux-gnu-64-unix"
。