1

ポートプログラムをビルドするRebarベースのErlangアプリケーションがあります。このポートプログラムはLinux固有であるため、MacOSではコンパイルが失敗します。ただし、Mac OSでビルドする場合は、Rebarでポートプログラムをスキップしてください。どうやってやるの?

の現在の仕様はrebar.config次のようになります。

{port_specs, [{"priv/my_port", ["c_src/foo.c", "c_src/bar.c"]}]}.
4

1 に答える 1

1

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の戻り値と照合されます。

  • によって返されるOTPリリース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"
  • の戻り値に基づくエミュレータのワードサイズ、32または64 erlang:system_info({wordsize, external})
  • OSファミリ、unixまたはwin32。(によって返されるタプルの最初の要素os:type/0

したがって、最終結果はまたはのようになり"R15B01-i386-apple-darwin10.8.0-32-unix"ます"R15B02-x86_64-unknown-linux-gnu-64-unix"

于 2012-09-19T08:52:03.650 に答える